# Функция GET_THE_TAXONOMIES() │ WP 2.5.0
Функция get_the_taxonomies()
позволяет получить все таксономии, связанные с постом. В результате вы получите массив HTML-ссылок на термины, связанные с указанным постом.
Эта функция полезна, если вы хотите отобразить все ссылки на термины во всех таксономиях, к которым привязан пост.
Функция может использоваться в цикле WordPress.
## Поддерживаемые объекты
Функция работает с постами, пользовательскими типами постов и пользовательскими таксономиями.
Для удобства отображения рекомендуется использовать обертку этой функции the_taxonomies()
. Она возвращает готовую строку, а не массив.
## Использует
- get_object_taxonomies()
- wp_get_object_terms()
## Возвращаемое значение
Функция возвращает массив, где ключом является слаг таксономии, а значением — список ссылок на термины.
## Использование
```php
get_the_taxonomies( $post, $args );
Аргументы
$post
(int|WP_Post) — ID поста или объект WP_Post. По умолчанию: глобальная переменная$post
.$args
(array) — Массив аргументов для форматирования списка таксономий. По умолчанию: пустой массив.
Шаблоны
template
(string) — Шаблон для отображения метки таксономии и списка терминов. По умолчанию: "Метка: Термины."term_template
(string) — Шаблон для отображения одного термина в списке. По умолчанию: имя термина с ссылкой на его архив.
Примеры использования
Пример 1: Работа с простым постом
$taxes = get_the_taxonomies( 119 );
/* $taxes будет содержать:
Array
(
[category] => Категории: Codex.
[post_tag] => Теги: loop и Newbe.
)
*/
Пример 2: Работа с постом, связанным с таксономиями
$taxes = get_the_taxonomies( 7363 );
/* $taxes будет содержать:
Array
(
[wpfunctag] => Теги функции: Upload.
[wpfunccat] => Категории функции: Другие.
)
*/
Пример 3: Изменение формата вывода
Чтобы изменить формат вывода, можно указать пар��метры:
$taxes = get_the_taxonomies( 119, array(
'template' => 'Таксономия "%s": %l',
'term_template' => '%2$s',
) );
/* $taxes будет содержать:
Array
(
[category] => Таксономия "Категории": Codex
[post_tag] => Таксономия "Теги": loop и Newbe
)
*/
Пример 4: Сбор всех таксономий и вывод в виде списка
Данный пример демонстрирует, как собрать все таксономии и отобразить их в виде ненумерованного списка.
$taxes = get_the_taxonomies( 119 );
if( $taxes ) {
echo "nt- ". implode("
nt- ", $taxes ) ."
n
";
}
/* Результат:
*/
Изменения
Функция была представлена в версии 2.5.0 WordPress.
Код функции
function get_the_taxonomies( $post = 0, $args = array() ) {
$post = get_post( $post );
$args = wp_parse_args(
$args,
array(
'template' => __( '%s: %l.' ),
'term_template' => '%2$s',
)
);
$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;
}
Связанные функции
get_object_taxonomies()
get_objects_in_term()
get_the_category()
get_the_category_list()
get_the_tag_list()
get_the_terms()
has_category()
has_tag()
is_object_in_taxonomy()