WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

wp_get_post_terms()WP 2.8.0

Получает элементы указанной таксономии (метки, рубрики ...) с которой связана указанная запись.

Для этой функции по умолчанию в $args устанавливается параметр 'field=all' (получить все поля термина). Другие значения этого аргумента: names (получать только названия терминов) и ids (только ID терминов ).

Вместо этой функции иногда лучше использовать get_the_terms(), т.к. там результат кэшируется.

Работает на основе: wp_get_object_terms()
Основа для: wp_get_post_tags()
1 раз — 0.003903 сек (очень медленно) | 50000 раз — 9.43 сек (быстро) | PHP 7.1.2, WP 4.8

Хуков нет.

Возвращает

Массив|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()

Примеры

0

#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
		)
)
*/
0

#2 Тоже самое, что в примере выше, но теперь получим только поля name:

$term_list = wp_get_post_terms( 2647, 'post_tag', array('fields' => 'names') );

/* получим:
Array(
	[0] => Новичкам
	[1] => Теория
	[2] => Хаки
)
*/
0

#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 6.5.2

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;
}
1 комментарий
    Войти