Функция работает только на страницах категорий, меток и архивах других таксономий, при этом она должна находиться вне цикла.
То есть, если функция была использована на странице архива категорий — то она выведет/вернёт название текущей категории, на странице архива меток — название текущей метки, на странице архива другой таксономии — название текущего элемента таксономии.
Вывести название текущего элемента таксономии вы также можете функцией 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) получаем вот что:
Как видите, имя категории выводится без ссылки.
Выводимое значение функции также можно записать в переменную:
$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.