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 — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Комментарии — 11

  • 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 #

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

  • Денис 6 апреля 2020 #

    Здравствуйте!
    Подскажите пожалуйста что я делаю не так?

    $category = get_the_category()[0];
        print_r($category); // WP_Term Object ( [term_id] => 50 [name] => Породистые коты [slug] => list_cats ...>
        if(is_category(array($category->term_id, $category->name, $category->slug))){
    // false ???
    }
    • Денис 6 апреля 2020 #

      Спасибо разобрался(перечитал комментарии). Понял что мне нужна in_category() т.к. функцию использую на странице поста.

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

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.