wp_get_post_terms()
Получает элементы указанной таксономии (метки, рубрики ...) с которой связана указанная запись.
Для этой функции по умолчанию в $args устанавливается параметр 'field=all' (получить все поля термина). Другие значения этого аргумента: names (получать только названия терминов) и ids (только ID терминов ).
Вместо этой функции иногда лучше использовать get_the_terms(), т.к. там результат кэшируется.
Хуков нет.
Возвращает
array|WP_Error.
[ WP_Term, WP_Term ]— Массив объектов (список терминов), когда удалось получить.[]— Пустой массив, когда терминов у записи нет.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().
По умолчанию: []
-
Примеры
#1 Тоже самое, что в примере выше, но теперь получим только поля name:
$term_list = wp_get_post_terms( 2647, 'post_tag', ['fields' => 'names'] ); /* получим: Array( [0] => Новичкам [1] => Теория [2] => Хаки ) */
#2 Тоже самое, что в примере выше, но теперь получим только поля ids:
$term_list = wp_get_post_terms( 2647, 'post_tag', ['fields' => 'ids'] ); /* В итоге получим: Array ( [0] => 44 [1] => 48 [2] => 12 ) */
#3 Получим метки поста 2647. Будут получены все поля меток:
$term_list = wp_get_post_terms( 2647, 'post_tag', ['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.8.0 | Введена. |
Код wp_get_post_terms() wp get post terms WP 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;
}