Wp_set_post_terms не работает
Мой код не работает, он не добавляет таксономию
add_action('init', 'post_test', 10);
function post_test() {
$empty = get_page_by_title('Produto teste', OBJECT, 'produtos');
if(empty($empty)) {
$insert_post = array(
'post_status' => 'publish',
'post_type' => 'produtos', // тип записи produtos
'post_title' => 'Produto teste', // заголовок тестового продукта
);
$post_id = wp_insert_post($insert_post);
if ($post_id) {
wp_set_post_terms($post_id, array('metais'), 'categoria-produtos'); // термин metais с id 108
}
add_post_meta($post_id, 'fornecedores', '5948'); // id поставщика
add_post_meta($post_id, '_fornecedores', 'field_52377232eb265');
}
}
почему не работает?

Как указано в wp_set_post_terms
комментарии:
Эта функция работает только с родным типом записи. Для таксономии в пользовательском типе записи используйте wp_set_object_terms()

Спасибо, брат, этот код работает! : wp_set_object_terms($post_id, array('metais'), 'categoria-produtos', true); // id тега metais равно 108
спасибо спасибо

Это уже не так. Для WP 5+ вы можете использовать оба варианта даже для пользовательских типов записей.

Теперь в Codex указано: Эта функция будет работать с любым типом записи. Альтернативно можно использовать wp_set_object_terms().

@ToleaBivol Не могу это подтвердить, потратил 4 часа на поиски причины, почему не устанавливалась пользовательская таксономия, оказалось, что есть разница между wp_set_post_terms и wp_set_object_terms
