wp_get_post_terms()
Получает элементы указанной таксономии (метки, рубрики ...) с которой связана указанная запись.
Для этой функции по умолчанию в $args устанавливается параметр 'field=all
' (получить все поля термина). Другие значения этого аргумента: names
(получать только названия терминов) и ids
(только ID терминов ).
Вместо этой функции иногда лучше использовать get_the_terms(), т.к. там результат кэшируется.
Хуков нет.
Возвращает
Массив|WP_Error
.
array( WP_Term, WP_Term )
— Массив объектов (список терминов), когда удалось получить.array()
— Пустой массив, когда терминов у записи нет.WP_Error
— WP_Error, если указанной таксономии нет.
Использование
wp_get_post_terms( $post_id, $taxonomy, $args );
- $post_id(число)
- ID поста.
По умолчанию: 0 (текущий пост) - $taxonomy(строка/массив)
- Название таксономии термины которой будут получены.
По умолчанию: "post_tag" - $args(массив)
Массив аргументов. Переписывает аргументы по умолчанию.
-
fields(string)
Какие поля термина нужно получить. Может быть:all
- получить все поля. По умолчанию.names
- получить только названия.ids
- получить только ID.
Default: 'all'
С версии WP 4.7, можно указывать все параметры функции get_terms(). До 4.7. список параметров смотрите в описании wp_get_object_terms()
Полный список параметров смотрите также в описании WP_Term_Query::__construct().
По умолчанию: array()
-
Примеры
#1 Получим метки поста 2647. Будут получены все поля меток:
$term_list = wp_get_post_terms( 2647, 'post_tag', array('fields' => 'all') ); /* $term_list будет содержать подобные данные: Array( [0] => stdClass Object( [term_id] => 44 [name] => Новичкам [slug] => for_newbie [term_group] => 0 [term_taxonomy_id] => 44 [taxonomy] => post_tag [description] => [parent] => 0 [count] => 7 ) [1] => stdClass Object( [term_id] => 48 [name] => Теория [slug] => teoriya [term_group] => 0 [term_taxonomy_id] => 49 [taxonomy] => post_tag [description] => [parent] => 0 [count] => 5 ) [2] => stdClass Object( [term_id] => 12 [name] => Хаки [slug] => haki [term_group] => 0 [term_taxonomy_id] => 12 [taxonomy] => post_tag [description] => [parent] => 0 [count] => 10 ) ) */
#2 Тоже самое, что в примере выше, но теперь получим только поля name:
$term_list = wp_get_post_terms( 2647, 'post_tag', array('fields' => 'names') ); /* получим: Array( [0] => Новичкам [1] => Теория [2] => Хаки ) */
#3 Тоже самое, что в примере выше, но теперь получим только поля ids:
$term_list = wp_get_post_terms( 2647, 'post_tag', array('fields' => 'ids') ); /* В итоге получим: Array ( [0] => 44 [1] => 48 [2] => 12 ) */
Список изменений
С версии 2.8.0 | Введена. |
Код wp_get_post_terms() wp get post terms WP 6.7.1
function wp_get_post_terms( $post_id = 0, $taxonomy = 'post_tag', $args = array() ) { $post_id = (int) $post_id; $defaults = array( 'fields' => 'all' ); $args = wp_parse_args( $args, $defaults ); $tags = wp_get_object_terms( $post_id, $taxonomy, $args ); return $tags; }