Как в WordPress исключить категорию из вывода на главной?

Иногда на сайте, особенно на блоге, возникает необходимость исключить из вывода на главной странице записи из конкретной категории.

Зачем исключать категорию из главной страницы WordPress?

WordPress по умолчанию на главной странице сайта выводит список записей из всех категорий. Но часто некоторый контент не является частью ваших обычных записей. Например, на техническом блоге может присутствовать категория Об искусстве или что-нибудь подобное. Понятно, что такой контент “выпадает” из общего формата сайта. В таком случае его можно просто скрыть из вывода на главной, оставляя при этом просмотр материала где-либо в навигационном меню.

Как исключить категорию из главной страницы WordPress?

Рассмотрим два наиболее популярных способа решения задачи, из которых вы сможете выбрать тот, который наилучшим образом соответствует вашим потребностям.

Способ 1. Плагин Ultimate Category Excluder

Использование бесплатного плагина Ultimate Category Excluder является самым простым способом скрыть записи категории на главной.

После установки и активации плагина первым делом нужно перейти в админ-раздел Настройки -> Category Excluder.

Страница настроек плагина Ultimate Category Excluder

На странице настроек плагина необходимо лишь выбрать нужную категорию в колонке Exclude from Front Page? и нажать кнопку Update.

Страница настроек плагина Ultimate Category Excluder

Способ 2. Вручную

В WordPress существует еще один способ исключить категорию из вывода на главной. Он предусматривает вставку специальных PHP-инструкций в основной конфигурационный файл functions.php вашей активной WordPress-темы.

Если Вы не знаете, как редактировать functions.php, то в этом случае Вам поможет плагин ProFunctions.

Добавим следующий код:

function wpschool_category_home( $query ) {
    if ( $query->is_home ) {
        $query->set( 'cat', '-61' );
    }
    return $query;
}

add_filter( 'pre_get_posts', 'wpschool_category_home' );

В указанном коде нужно сделать некоторые изменения. Так, в строке $query->set( ‘cat’, ‘-61’ ) значение ‘-61’ означает уникальный идентификатор категории (рубрики), которую нужно скрыть. О том, как посмотреть это значение, мы детально рассматривали в одной из наших прошлых статей.

Если нужно скрыть несколько категорий, то их ID нужно просто перечислить через запятую. Например:

$query->set( 'cat', '-61', '-44', '-5' );

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

Если Вам понравилась статья — поделитесь с друзьями
Михаил Петров
Привет! Меня зовут Михаил Петров. Я копирайтер и занимаюсь этим с 2013 года. Скрупулезность и ответственность - моя фишка! Не могу делать как попало и добиваюсь, чтоб заказчик сказал минимум “неплохо”. За все время своей работы пришлось написать и отредактировать немало разной “текстовухи”, включая SEO-тексты, отзывы и прочую чушь. На сегодняшний день специализируюсь на написании информационных статей и руководств технического направления. Вижу смысл и светлое будущее в текстах для людей, а не для машин.
Обсуждение: 6
  1. Антон

    Здравствуйте! Не подскажите, вручную если код вставлять в functions.php, куда его примерно вставлять? Вставил в конце, не работает, в другие места вставлял, тоже не работает…

    1. Михаил Петров author

      Добрый день!

      Ваш код будет работать в любом месте functions.php. Но, чтобы не запутаться, обычно его добавляют в конце. Если не работает, нужно проверять сам код. Попробуйте переключиться на другую тему и попробовать в ней. Если на нескольких темах не будет результата, то нужно разбираться в самом коде.

      С уважением Михаил

  2. Сурен

    а как вы сделали, что функция по имени вашего сайта? wpschool?

    1. Invisible

      Имя функции может быть любым, единственное условие, оно должно быть уникальным что бы функции самого wordpress и ваша не назывались одинаково

  3. Михаил

    Не совсем понятно: каким должен быть чистый код функции? зачем этот атрибут? – wpschool

  4. Валентин

    $query->set( ‘cat’, ‘-61’, ‘-44’, ‘-5’ ); Так не работает. Запустилось вот так: $query->set( ‘cat’, ‘-61, -44, -5’ );

Задать вопрос