single_cat_title() — функция для вывода названия текущей категории

Функция работает только на страницах категорий, меток и архивах других таксономий, при этом она должна находиться вне цикла.

То есть, если функция была использована на странице архива категорий — то она выведет/вернёт название текущей категории, на странице архива меток — название текущей метки, на странице архива другой таксономии — название текущего элемента таксономии.

Вывести название текущего элемента таксономии вы также можете функцией single_term_title().

Как вывести имя категории вне цикла, если известен только ID? Легко, для этого используем функцию get_category().

Если же нужно вывести названия рубрик записи, то вам в помощь функции get_the_category() и the_category().

single_cat_title( $prefix = '', $display = true )
$prefix
(строка) текст, который нужно вывести перед названием категории,
$display
(логическое) вывести или вернуть результат (записать в переменную, по умолчанию имена рубрик/меток сразу выводятся — true. Если установлено false, то параметр $display будет игнорироваться.

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

<p><?php single_cat_title('Вы находитесь в категории: '); ?></p>

Не поленюсь сделать скриншот — в итоге в исходном HTML-коде (Ctrl + U) получаем вот что:

результат действия функции single_cat_title()

Как видите, имя категории выводится без ссылки.

Выводимое значение функции также можно записать в переменную:

$current_category = single_cat_title('', false);
echo "<p>Вы находитесь в категории: $current_category</p>";

В итоге получится то же самое, что и в предыдущем примере.

Фильтры single_cat_title, single_tag_title, single_term_title

В случае, если функция single_cat_title() была использована на странице какой-нибудь рубрики, к выводимому результату можно применить фильтр:

$term_name = apply_filters( 'single_cat_title', $term->name );

Если на странице метки:

$term_name = apply_filters( 'single_tag_title', $term->name );

Для остальных таксономий:

$term_name = apply_filters( 'single_term_title', $term->name );

Определение типа текущей страницы производится условными тегами is_category(), is_tag() и is_tax().

$term->name
(строка) название текущей рубрики / метки или элемента таксономии.

Небольшой пример — давайте для рубрики с ID = 5 всегда будем выводить заголовок с HTML-классом cat5, а для всех остальных категорий — просто заголовок <h1>, в таком случае код будет следующим:

function true_cat5_with_class( $cat_name ){
	if( is_category( 5 ) ) {
		return '<h1 class="cat5">' . $cat_name . '</h1>';
	} else {
		return '<h1>' . $cat_name . '</h1>';
	}
}
 
add_filter('single_cat_title', 'true_cat5_with_class', 10, 1);

Перед тем, как будете что-то менять через фильтры, обратите внимание, что single_cat_title() может также использоваться в других местах сайта, например при заполнении тега <title>.

Функция single_term_title()

Начиная с версии WordPress 3.1, функция single_cat_title() работает на основе single_term_title(), причем она использует эту функцию как есть, без каких-либо дополнительных действий с аргументами. Следующий код взят из файла движка WordPress general-template.php:

function single_cat_title( $prefix = '', $display = true ) {
	return single_term_title( $prefix, $display );
}

Значения по умолчанию параметров $prefix и $display у функции single_term_title() точно такие же, поэтому, если хотите, для вывода названий меток и рубрик вы можете использовать её — абсолютно никакой разницы нет, разве что появятся какие-нибудь изменения в следующих версиях WordPress.

Миша Рудрастых Разработчик WordPress WooCommerce

Миша Рудрастых

Впервые познакомился с WordPress в 2009 году, и после двух лет мучений с Joomla и самописными движками это был просто бальзам на душу. С 2014 года меня можно встретить на WordCamp — официальной конфе по WP в Москве, иногда там выступаю. Также в настоящее время веду курсы по WordPress в Epic Skills в Питере.