get_the_taxonomies() WP 2.5.0

Отримує всі елементи всіх таксономій, пов’язаних із записом. Отримує масив HTML посилань.

Отримає таксономії у вигляді масиву, у значеннях якого будуть перераховані посилання на терміни, в яких знаходиться зазначений запис.

Використовується в циклі WordPress .

Функцію зручно використовувати, коли потрібно показати всі зв’язки запису з будь-якими таксономіями, в яких цей запис знаходиться.

Працює з постами, новими типами записів та довільними таксономіями – повний комплект…

Використовуйте обгортку цієї функції the_taxonomies() , щоб отримати результат готовий рядок для виведення на екран, а не масив.

Працює на основі:
get_object_taxonomies() ,
wp_get_object_terms()
Основа для:
the_taxonomies()
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()

Приклади

0

#1 Демонстрація роботи для звичайного посту

$taxes = get_the_taxonomies(119);

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

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

$taxes = get_the_taxonomies(7363);

/* $taxes міститиме:
Array
(
	[wpfunctag] => Теги функцій: <a href="ПОСИЛКА">upload</a>.
	[wpfunccat] => Категорії функцій: <a href="ПОСИЛКА">Інше</a>.
)
*/
0

#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 href="ПОСИЛКА" target="_blank">Новачкам</a>
)
*/
0

#4 Зберемо все і виведемо на екран у списку LI

Це аналог функції the_taxonomies()

$taxes = get_the_taxonomies(119);

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

Отримаємо:

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

список змін

З версії 2.5.0Введено.

Код get_the_taxonomies() WP 6.0.2

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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *