is_category() — проверяет, является ли текущая отображаемая страница рубрикой

Условный тег, возвращает true в том случае, если текущая страница является архивом рубрик. Также в параметрах имеется возможность задавать проверку какой-то конкретной рубрики (или нескольких рубрик).

is_category( $category = '' )

$category
(целое|строка|массив) — ID/ярлык/название рубрики. Также можно передать несколько значений в виде массив.

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

Сразу же давайте условимся, предположим у нас на блоге есть рубрика «WordPress» с ярлыком «wordpress» и ID=5. Ее и будем использовать в примере.

Передаем ID в качестве параметра:

if ( is_category( 5 ) ) {
	echo 'Вы находитесь в категории WordPress';
}

Передаем в качестве параметра ярлык рубрики:

if ( is_category( 'wordpress' ) ) {
	echo 'Вы находитесь в категории WordPress';
}

В том случае, если потребуется использовать название рубрики, имейте ввиду — регистр имеет значение!

if ( is_category( 'WordPress' ) ) {
	echo 'Вы находитесь в категории WordPress';
}

Теперь проверим сразу несколько разных рубрик следующим образом:

if ( is_category( array( 4, 'jquery', 'WordPress') ) ) {
	echo 'Вы находитесь либо в рубрике с ID=4, либо в рубрике jQuery, либо в WordPress';
}

Обратная проверка:

if ( !is_category() ) {
	echo 'Текущая отображаемая страница не является рубрикой.';
}

Комментарии 8

  • VRS19 декабря 2013 в 23:12 #

    Доброй ночи, Миша.

    Хочу сделать разное оформление для отдельных рубрик, причем чтобы id их записывалось в админке.

    Создала отдельную страницу настроек темы. Там вписываю id через запятую.

    В шаблоне категорий вывожу:

    $catnews = get_option('cat_news'); // получаю то, что записано в настройках. Смотрела через echo $catnews; - выводит то, что нужно.
    if (is_category($category = '{$catnews}')) { // создаю условие.

    Но не работает ((.

    Проверяла также (array($catnews)), и просто ($catnews), и даже через explode|implode, чтобы id обрамлять одинарными кавычками и через запятую прописывать.

    При том, что если вручную прописать в самом шаблоне - работает.

    Может быть подскажешь из-чего так, как пофиксить =)?

    • VRS20 декабря 2013 в 00:12 #

      Нашла сама, если кому пригодится =)

      $catnews = explode(',',get_option('cat_news'));
      $catnews[] = array($catnews);
      if (is_category($category = $catnews)) {
  • Влад9 июня 2014 в 23:06 #

    Доброй ночи! Скажите, как поставить условие так, чтоб оно затрагивало не только рубрику например "Wordpress", но и её подрубрики? т.е. чтобы is_category распространялось не только на саму рубрики но и на её подрубрики. Спасибо)

    • Миша10 июня 2014 в 08:06 #

      Доброго времени суток!
      Можете использовать эту функцию:

      function is_subcategory( $cat_id ){
      	$subcats = get_terms('category', 'hide_empty=0&child_of=' . $cat_id);
      	if( $subcats ){
      		foreach( $subcats as $subcat )
      			if( is_category( $subcat->term_id ) ) {
      				return true;
      			}
      	}
      	return false;
      }

      В итоге получится условие:

      if( is_category( $cat_id ) || is_subcategory( $cat_id ) ) {
       
      }

      Протестировать работоспособность кода времени не было, пожалуйста, дайте знать, если код работает/не работает.

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Миша: Метод тыка хорош, но оснвоы нужно знать в любом случае. Рекомендую почитать это.

  • Миша: Добрый вечер! Если я правильно понял, то: if( $opisanie ) echo '' . $opisanie . '' ;

  • alex morozov: Добрый вечер! у меня возникла следующая проблема. Я делаю фотоальбомы, чтобы они выглядели "как в контакте". Так вот, та...

  • Vladislav: Если эту муть убрать, то исчезает меню, и появляется описание под миниатюрами, которого не должно быть, как вы видите, я...

  • Миша: Либо размеры изображений вам помогут, либо CSS. И строку 14 гляньте, там муть какая-то.