wp_set_post_terms() WP 2.8.0
Устанавливает термины для указанной записи (рубрики для поста).
Для древовидных терминов нужно передавать ID термина а не название, а то может возникнуть конфликт названий: могут быть одинаковые названия терминов в разных ветках.
ID термина можно посмотреть в админке (в ссылке) или получить так:
$term_id = term_exists($term, $taxonomy, $parent )['term_id'];
Хуков нет.
Возвращает
Массив/false/WP_Error.
- false - если $post_id не число или равно 0.
- массив ID, которые были задействованы.
- WP_Error - при ошибке.
Использование
wp_set_post_terms( $post_ID, $tags, $taxonomy, $append );
- $post_ID(число) (обязательный)
- ID поста.
- $tags(строка/массив/число[])
Список элементов таксономии в виде массива или строки через запятую.
Если таксономия древовидная, то нужно всегда указывать только ID терминов (в виде числа)! Если предать строки, то они превратятся в 0. Это нужно, потому что древовидные таксы, могут иметь 2 термина с одинаковыми названиями.
Когда указываете ID, указывайте его в массиве, даже если указывается всего один ID. Т.е.
99
нужно передать как[99]
.Также важно убедиться, что передаваемые ID передаются с типом "число", а не "строка"! Потому что строки в виде числа, например, '98' будут интерпретироваться как название термина, а не его ID! В новых версиях движка этот баг вроде поправили.
Функция создаст новый термин, если не найдет подходящий. При этом, если указать название в кириллице, то имя будет указанное, а слаг будет обработан как обычно (функцией sanitize_title()).
По умолчанию: ''
- $taxonomy(строка)
- Название таксономии, к элементам которой прикреплять запись(и).
По умолчанию: post_tag - $append(логический)
- Добавить к существующим или заменить термины:
true — будут добавлены к существующим;
false — будут заменены.
По умолчанию: false
Примеры
1. Категории и метки по умолчанию
Нижеследующий пример кода, который можно вставить в functions.php для того, чтобы при сохранении поста ему указывалась рубрика (название рубрики) и метка (название метки) по умолчанию, если такие метка/рубрика еще не указаны:
add_action( 'wp_insert_post', 'update_post_terms' ); function update_post_terms( $post_id ) { if ( $parent = wp_is_post_revision( $post_id ) ) $post_id = $parent; $post = get_post( $post_id ); if ( $post->post_type != 'post' ) return; // добавим метку по умолчанию wp_set_post_terms( $post_id, 'название метки', 'post_tag', true ); // добавим категорию по умолчанию $categories = wp_get_post_categories( $post_id ); $newcat = get_term_by( 'name', 'название рубрики', 'category' ); array_push( $categories, $newcat->term_id ); wp_set_post_categories( $post_id, $categories ); }
Заметки
- Смотрите: wp_set_object_terms()
Список изменений
С версии 2.8.0 | Введена. |
Код wp_set_post_terms() wp set post terms WP 5.6
Cвязанные функции
Из метки: term (термины таксономий)
- get_term()
- get_term_by()
- get_term_children()
- get_term_field()
- get_term_link()
- get_terms()
- get_the_term_list()
- get_the_terms()
Еще из раздела: Для записей
- get_object_taxonomies()
- get_objects_in_term()
- get_the_category()
- get_the_category_list()
- get_the_tag_list()
- get_the_tags()
- get_the_taxonomies()