Функция 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 '
';
}
Как работает функция
Код функции
Вот код функции 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. Она позволяет легко получать информацию о категориях постов, что полезно для вывода ссылок, имен и изображений на страницах вашего сайта.