WordPress как на ладони
wordpress jino

get_the_taxonomies() WP 2.5.0

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

Функцию удобно использовать, когда нужно показать все связи записи с любыми таксономиями, в которой эта запись находится.

Функцию можно использовать в цикле WordPress.

Работает с постами, новыми типами записей и с произвольными таксономиями - полный комплект...

Используйте обертку этой функции - the_taxonomies(), чтобы получить результат готовую строку для вывода на экран, а не массив.

Используется в: the_taxonomies().
Работает на основе: get_object_taxonomies(), wp_get_object_terms()
✈ 1 раз = 0.004388с = очень медленно | 50000 раз = 114.09с = тормоз PHP 7.0.8, WP 4.6

Хуков нет.

Возвращает

Массив. Список таксономий, где ключ массива - это ярлык таксономии, а значение - это список элементов таксономии.

Использование

get_the_taxonomies( $post, $args );
$post(число/WP_Post)
ID или объект записи, связи с таксономиями которой нужно получить.
По умолчанию: 0 (текущая запись)
$args(массив)

Параметры по которым нужно выводить (форматировать вывод) список таксономий. Может быть:

  • template (строка)
    Шаблон вывода списка. Где %s - название таксономии, а %l - список элементов в формате указанном в параметре $term_template.
    По умолчанию: '%s: %l.'

  • term_template (строка)
    Формат вывода каждого элемента таксономии в списке. По умолчанию название термина, как ссылка на архив записей термина.
    По умолчанию: '<a href="%1$s">%2$s</a>',

По умолчанию: array()

Примеры

#1 Демонстрация работы для обычного поста

$taxes = get_the_taxonomies( 119 );

/* $taxes будет содержать:
Array
(
	[category] => Рубрики: <a href="ССЫЛКА">Кодекс</a>.
	[post_tag] => Метки: <a href="ССЫЛКА">loop</a> и <a href="ССЫЛКА">Новичкам</a>.
)
*/

#2 Демонстрация работы для типа записи с таксономиями

$taxes = get_the_taxonomies( 7363);

/* $taxes будет содержать:
Array
(
	[wpfunctag] => Метки функций: <a href="ССЫЛКА">upload</a>.
	[wpfunccat] => Категории функций: <a href="ССЫЛКА">Прочее</a>.
)
*/

#3 Изменим формат вывода

Чтобы изменить формат вывода, нужно указать параметры:

$taxes = get_the_taxonomies( 119, array(
	'template'      => 'Таксономия "%s": %l',
	'term_template' => '<a href="%1$s" target="_blank">%2$s</a>',
) );

/* $taxes будет содержать:
Array
(
	[category] => Таксономия "Рубрики": <a href="ССЫЛКА" target="_blank">Кодекс</a>
	[post_tag] => Таксономия "Метки": <a href="ССЫЛКА" target="_blank">loop</a> и <a ССЫЛКА" target="_blank">Новичкам</a>
)
*/

#4 Соберем все и выведем на экран в LI списке

Это аналог функции the_taxonomies()

$taxes = get_the_taxonomies( 119 );

if( $taxes )
	echo "<ul>\n\t<li>". implode("</li>\n\t<li>", $taxes ) ."</li>\n</ul>";

Получим:

<ul>
	<li>Рубрики: <a href="ССЫЛКА">Кодекс</a>.</li>
	<li>Метки: <a href="ССЫЛКА">loop</a> и <a href="ССЫЛКА">Новичкам</a>.</li>
</ul>

Код get the taxonomies: wp-includes/taxonomy.php WP 4.9

<?php
function get_the_taxonomies( $post = 0, $args = array() ) {
	$post = get_post( $post );

	$args = wp_parse_args( $args, array(
		/* translators: %s: taxonomy label, %l: list of terms formatted as per $term_template */
		'template' => __( '%s: %l.' ),
		'term_template' => '<a href="%1$s">%2$s</a>',
	) );

	$taxonomies = array();

	if ( ! $post ) {
		return $taxonomies;
	}

	foreach ( get_object_taxonomies( $post ) as $taxonomy ) {
		$t = (array) get_taxonomy( $taxonomy );
		if ( empty( $t['label'] ) ) {
			$t['label'] = $taxonomy;
		}
		if ( empty( $t['args'] ) ) {
			$t['args'] = array();
		}
		if ( empty( $t['template'] ) ) {
			$t['template'] = $args['template'];
		}
		if ( empty( $t['term_template'] ) ) {
			$t['term_template'] = $args['term_template'];
		}

		$terms = get_object_term_cache( $post->ID, $taxonomy );
		if ( false === $terms ) {
			$terms = wp_get_object_terms( $post->ID, $taxonomy, $t['args'] );
		}
		$links = array();

		foreach ( $terms as $term ) {
			$links[] = wp_sprintf( $t['term_template'], esc_attr( get_term_link( $term ) ), $term->name );
		}
		if ( $links ) {
			$taxonomies[$taxonomy] = wp_sprintf( $t['template'], $t['label'], $links, $terms );
		}
	}
	return $taxonomies;
}

Cвязанные функции

Из раздела: Для записей

get_the_taxonomies Комментариев нет

Здравствуйте, !

Ваш комментарий