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 'Текущая отображаемая страница не является рубрикой.';
}

Миша

В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

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

  • VRS 19 декабря 2013 #

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

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

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

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

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

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

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

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

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

    • VRS 20 декабря 2013 #

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

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

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

    • Миша 10 июня 2014 #

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

      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 ) ) {
       
      }

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

      • Роман 12 октября 2015 #

        Приветствую, Миша!
        Даю знать, проверил, код работает, спасибо, помогли)

        • Миша 12 октября 2015 #

          Приветствую! Отлично!

      • Валерий 7 января 2016 #

        Отлично!
        А можно продолжить чтобы и на записи внутри категории тоже работало.
        А то пропадают категории когда внутри статьи находишься.

        Заранее спасибо! )

        • Миша 9 января 2016 #

          Для этого вам понадобится функция in_category().

  • Серж 28 января 2020 #

    Здравствуйте.
    Подскажите пожалуйста, как можно кодом добавить возможность определенному
    пользователю редактировать определенную рубрику
    или несколько назначенных ему одному Рубрик (Категорий). Спасибо...

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

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, в случае несоблюдения этого условия в 99% случаях ваш коммент будет удалён, а автор заблокирован. Печалька.