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

Функция get_the_category() в WordPress

Функция get_the_category() позволяет получить массив данных о категориях для текущего поста. Если вы используете эту функцию вне цикла WordPress, вы можете передать идентификатор поста.

Как использовать функцию

Синтаксис

get_the_category( $post_id );
  • $post_id (integer): Идентификатор поста, для которого вы хотите получить категории. По умолчанию используется ID текущего поста.

Возвращаемое значение

Функция возвращает массив объектов WP_Term, каждый из которых представляет собой категорию, назначенную посту. Объекты содержат дополнительные свойства, созданные функцией _make_cat_compat().

Примеры использования

Пример 1: Получение имени первой категории

Вы можете получить только имя первой категории (если пост принадлежит одной или нескольким категориям):

$cats = get_the_category();
echo array_shift($cats)->name;

Пример 2: Ответ функции

Чтобы увидеть, какие категории есть у поста, вы можете использовать следующую конструкцию:

$categories = get_the_category();
print_r($categories);

Результат будет выглядеть примерно так:

Array
(
    [0] => WP_Term Object
        (
            [term_id] => 7
            [name] => Codex
            [slug] => codex
            [term_group] => 0
            [term_taxonomy_id] => 7
            [taxonomy] => category
            [description] => 
            [parent] => 3
            [count] => 17
            ...
        )
    [1] => WP_Term Object
        (
            [term_id] => 4
            [name] => Usefulness
            [slug] => usefulness
            ...
        )
)

Пример 3: Получение данных первой категории из массива

Чтобы показать только имя первой категории, используйте следующий код:

$categories = get_the_category();

if (!empty($categories)) {
    echo esc_html($categories[0]->name);
}

Чтобы сделать первую категорию ссылкой на страницу категории, используйте:

$categories = get_the_category();

if (!empty($categories)) {
    echo '' . esc_html($categories[0]->name) . '';
}

Пример 4: Получение категорий вне цикла

Если вам нужно получить категории поста вне цикла WordPress, можете использовать следующий код:

global $post;

$categories = get_the_category($post->ID);

Каждый объект категории содержит следующие данные:

  • ID категории: $cat->term_id
  • Имя категории: $cat->name
  • Слаг категории: $cat->slug
  • Описание категории: $cat->description
  • ID родительской категории: $cat->parent
  • Количество постов в этой категории: $cat->count

Пример 5: Выводим ссылки на категории поста

Чтобы вывести ссылки на категории поста, используйте цикл:

foreach (get_the_category() as $category) {
    printf('%s',
        esc_url(get_category_link($category)),
        esc_html($category->name)
    );
}

Пример 6: Ссылки на категории через запятую

Если вы хотите вывести ссылки на категории, разделенные запятыми, используйте следующий код:

$links = array_map(
    function ($category) {
        return sprintf(
            '%s',
            esc_url(get_category_link($category)),
            esc_html($category->name)
        );
    },
    get_the_category()
);

echo implode(', ', $links);

Пример 7: Показываем изображения для каждой категории

Чтобы показать изображение для каждой категории, используйте следующий код. Изображения должны называться так же, как ID категории (например, 12.jpg) и находиться в папке images на вашем сайте:

foreach (get_the_category() as $category) {
    echo '' . esc_attr($category->name) . '';
}

Как работает функция

Код функции

Вот код функции get_the_category(), который находится в файле wp-includes/category-template.php:

function get_the_category( $post_id = false ) {
    $categories = get_the_terms( $post_id, 'category' );
    if ( ! $categories || is_wp_error( $categories ) ) {
        $categories = array();
    }

    $categories = array_values( $categories );

    foreach ( array_keys( $categories ) as $key ) {
        _make_cat_compat( $categories[ $key ] );
    }

    return apply_filters( 'get_the_categories', $categories, $post_id );
}

Функция сначала получает термины (категории) для заданного поста. Если ничего не найдено, возвращается пустой массив. Затем вызовет функцию _make_cat_compat(), которая добавляет дополнительные свойства к категориям.

Заключение

Функция get_the_category() — мощный инструмент для работы с категориями в WordPress. Она позволяет легко получать информацию о категориях постов, что полезно для вывода ссылок, имен и изображений на страницах вашего сайта.

Leave a Reply

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