Получение объекта категории на странице категории
Хорошо, надеюсь, вопрос простой... Я нахожусь на странице категории с ID 4 и хочу получить объект категории, чтобы работать с его значениями.
Я внимательно изучил кодекс WordPress, но без особого успеха. Помните - мне нужно получить не категории поста, а объект текущей категории.
Спасибо большое, Бен :-)

$wp_query->get_queried_object()
— это очень универсальная функция. Она возвращает текущую категорию, метку (тег), термин произвольной таксономии, автора, страницу или запись в зависимости от того, какую страницу или архив вы просматриваете. Особенно полезна, если вы хотите упростить заголовки архивов.

Чтобы получить объект категории, используйте get_category
(документация). Это легко, если вы знаете название, ярлык (slug) или ID категории. Но если вы их не знаете, можно воспользоваться функцией is_category
для определения текущей категории и передать её ID в get_category
.

Это на самом деле не имеет смысла. Фактически, это единственный ответ, который НЕ является правильным. Автор хотел способ получить объект категории. Функция is_category не "проверяет, на какой категории вы находитесь" - она говорит вам, находитесь ли вы на странице категории. Если у вас есть ID, то да, вы можете использовать get_category(), но я предполагаю, что автор использовал ID=4 просто как произвольный пример, и на самом деле не знал заранее ID категории, которую хотел запросить.

Я бы рекомендовал привыкнуть использовать функции get_term
или get_terms
, так как функции для работы с категориями являются лишь обёртками, которые в конечном итоге вызывают get_term(s)
.
<?php
$queried_category = get_term( get_query_var('cat'), 'category' );
// echo $queried_category->term_id; // ID категории
// echo $queried_category->slug; // Ярлык (slug) категории
// echo $queried_category->name; // Название категории
// echo $queried_category->description; // Описание категории
?>
Освоение функций для работы с терминами упростит работу с пользовательскими таксономиями, так как в таких случаях вам придётся использовать именно эти функции.
http://codex.wordpress.org/Function_Reference/get_term
http://codex.wordpress.org/Function_Reference/get_terms
И ещё одна функция, которая редко используется, но может быть очень полезной:
http://codex.wordpress.org/Function_Reference/get_term_by
Она позволяет получить объект термина по его названию, ярлыку или ID.

Интересный случай, когда одна из многих архивных страниц категорий, включенных в пользовательское меню, возвращала пустой массив для
get_the_category();
потребовал от меня перепробовать все возможные способы решения проблемы (без каламбура).
is_category() ВОЗВРАЩАЕТ true
get_the_category() ВОЗВРАЩАЕТ пустой массив
the_category() ВОЗВРАЩАЕТ NULL
В итоге правильным решением оказался вариант от Бена Эверарда
get_category(get_query_var('cat'), false) ВОЗВРАЩАЕТ корректный объект WPCategory
Спасибо!

на самом деле, ответ @JanFabry — это тот, который должен быть помечен как "правильный" — get_queried_object()
, гораздо проще и предпочтительный метод.
