Функция get_the_taxonomies() в WordPress: описание, использование, примеры

# Функция 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()

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *