Функция работает только на страницах категорий, меток и архивах других таксономий, при этом она должна находиться вне цикла.
То есть, если функция была использована на странице архива категорий — то она выведет/вернёт название текущей категории, на странице архива меток — название текущей метки, на странице архива другой таксономии — название текущего элемента таксономии.
Вывести название текущего элемента таксономии вы также можете функцией single_term_title().
Как вывести имя категории вне цикла, если известен только ID? Легко, для этого используем функцию get_category().
Если же нужно вывести названия рубрик записи, то вам в помощь функции get_the_category() и the_category().
single_cat_title( $prefix = '', $display = true )
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()
была использована на странице какой-нибудь рубрики, к выводимому результату можно применить фильтр:
$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().
Небольшой пример — давайте для рубрики с 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>
.
Начиная с версии 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.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Здравствуйте, подскажите с выводом категорий
Категории вывожу так:
В дочерней категории все правильно выводится: “родительская » дочерняя” – тут все в норме.
Находясь в родительской категории создается проблема, выводится: “родительская » дочерняя(последнего материала)”, а нужно чтобы просто родительская. Как решить проблему?
тут вопрос - категории к каждому посту или категории на странице в целом, как заголовок?
как заголовок. есть 3 родительские категории, в них дочернии категории.
нужно чтобы в дочерних отображалось "родительская » дочерняя", а в родительских "родительская". не важно, будет гипер-ссылка или просто имя категории.
если как заголовок, то почему не использовать функцию
single_cat_title()
?single_cat_title() не совсем так работает, например на странице "site.ru/categoriya/podkategoriya/" выводит "имя_подкатегории",
мне нужно, чтобы когда находишься на странице:
"site.ru/categoriya/podkategoriya/" - выводило "имя_категории » имя_подкатегории".
а если находишься на "site.ru/categoriya/" - выводило "имя_подкатегории".
или я single_cat_title что то не то делаю?
если я не понятно объяснил, то покажу на сайте.
http://zadota.ru/dota1/novosti - выводит "Новости", хотя нужно "Dota1 » Новости".
http://zadota.ru/dota1/ - тут все правильно выводит "Dota1".
вывод и там и там осуществляется таким кодом "".
сорри за долгий ответ, там какая-то лажа на хостинге, ппц.
итак, есть такая функция:
с помощью нее можно получить ID категории, зная ID - можно узнать, есть ли у этой категории родительская, если родительская есть, то приписываем в начале еще и ссылку на родительскую, как это будет примерно выглядеть:
спасибо, все работает.
рад помочь)
Здравствуйте, Михаил! Не знаю по адресу ли я обращаюсь, но возможно, Вы сможете мне помочь в решении моей проблемы....
Хотя сказать честно, потеряла уже последнюю Надежду её решить.
Очень хочется сделать так, чтобы если указываешь, например, рубрику
http://ekaterinagabzevich.ru/category/blogging/plaginy-wordpress-blogging/
то статьи не попадали в родительскую рубрику
http://ekaterinagabzevich.ru/category/blogging/
Можно ли как-то это сделать?
С уважением.
Добрый день!
при указании рубрик родительские же не отмечаются, верно?
рекомендую ознакомиться с двумя статьями, которые по сути способны решить любые проблемы с выводом записей:
https://misha.agency/blog/wordpress/wp_query.html
и
https://misha.agency/blog/wordpress/pre-modify-queries.html
Верно. Не отмечаются....
Мне бы вот, чтобы прямо пальцем показали... напиши вот этот код там...
Рекомендованные Вами статьи обязательно изучу. Спасибо.
Посмотрела... запуталась окончательно, самой мне , похоже, это "не по зубам"...
очень жаль(
если проблема ещё актуальна, свяжитесь со мной по скайпу, возможно я смогу написать вам подходящий код.
Здравствуйте! Возникла такая проблема: в пользовательской записи есть категория (рубрика) автор, которая выводится следующим образом:
вслед за авторами необходимо выводить информацию о каждом авторе (описание рубрики), пыталась реализовать вывод следующим образом:
но подобный вывод не работает..
Не могли бы Вы подсказать в чём может быть проблема?
Добрый вечер!
для начала попробуйте autor добавить в одинарные кавычки 'autor'.
Спасибо за совет!) Проблему решила следующим образом(дело было не в кавычках):
А в принципе кавычки лучше ставить? Их отсутствие может сказаться на работоспособности кода?
А как вывести просто имя рубрики?
Я вывожу cat_name; ?>
Но почему то у меня выводиться не корректно(
А точнее повторяется 2-а раза первая рубрика,потом 3-тья вместо второй.
Когда ставил описание категории,было норм...
$category = get_the_category(); echo $category[0]->cat_name;
Миша, спасибо тебе! Лазил на других сайта, только твой помог. Удачи тебе!
Я рад, спасибо, и тебе удачи!
Благодарю за статью.