WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Как назначить термин таксономии посту?

Во дела! Ответить не могу, но могу редактировать (задал вопрос будучи гостем). В общем, вопрос закрыт, мне подсказали, что надо использовать institutions a не institution.

У меня в базе импортирована куча записей с разными кастомными post_type. Одновременно тема создает таксономию institution таким образом

function my_taxonomies_institutions() {
	$labels = array(
		'name'              => _x( 'Категории', 'taxonomy general name' ),
		'singular_name'     => _x( 'Категория', 'taxonomy singular name' ),
		'search_items'      => __( 'Найти' ),
		'all_items'         => __( 'Все' ),
		'parent_item'       => __( 'Родительская' ),
		'parent_item_colon' => __( 'Родительская:' ),
		'edit_item'         => __( 'Редактировать' ), 
		'update_item'       => __( 'Обновить' ),
		'add_new_item'      => __( 'Добавить новую' ),
		'new_item_name'     => __( 'Новая' ),
		'menu_name'         => __( 'Категории' ),
	);
	$args = array(
		'labels'             => $labels,
		'hierarchical'       => true,
		'show_admin_column'  => true,
		'rewrite'            => array( 'hierarchical' => true, 'slug' => 'institutions' ),
	);
	register_taxonomy( 'institutions', 'institution', $args ); 
}
add_action( 'init', 'my_taxonomies_institutions', 0 );

В админке есть пункт меню Учреждения и внутри - Категории. Например, категория Секции (sekcii).
Теперь, чтобы заработала тема, расчитанная на эти таксономии, мне надо пройтись по базе и если в посте post_type=sekcii установить ему (как я это понимаю) термин sekcii таксономии institution. Вроде это делается функцией wp_set_post_terms
Сначала определяю id термина:

print term_exists('sekcii'); // 7

дальше пробую эти варианты

$ret = wp_set_post_terms($pid, 7, 'institution');
$ret = wp_set_post_terms($pid, 'sekcii', 'institution');
$ret = wp_set_post_terms($pid, 7, 'Категория');
$ret = wp_set_post_terms($pid, 'Секции', 'Категория');

каждый раз получаю

WP_Error Object ( [errors] => Array ( [invalid_taxonomy] => Array ( [0] => Неверная таксономия. ) ) [error_data] => Array ( ) )

Что я делаю не так?

Заметки к вопросу:
campusboy 2 мес назад

Где вы прописываете код? Это надо делать минимум на хуке init, после регистрации таксономий, иначе если вызвать код раньше - естественно он не увидит таксономию и сразу вернет ошибку, не ища термин в базе.

0
Igor
2 месяца назад

Нет ответов на этот вопрос.

    На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация