В WordPress часто возникает задача исключить определённые категории из вывода на сайте. Например, скрыть служебные категории, не показывать новостные категории в блоге или исключить их из ленты RSS. В этой статье мы разберём несколько способов, как удалить или скрыть категории из публикаций WordPress, используя как готовые плагины, так и собственные решения через код.
Почему нужно удалять или скрывать категории из публикаций
В стандартной установке WordPress все категории выводятся на страницах архива, в виджетах, в RSS-лентах и на страницах с постами. Но бывают ситуации, когда это нежелательно:
- Нужно скрыть технические категории от посетителей;
- Не выводить определённые категории в ленте блога или на главной странице;
- Исключить категории из RSS, чтобы не распространять определённый контент;
- Настроить отображение категорий под конкретные задачи сайта.
Стандартных настроек для этого в админке WordPress нет, поэтому приходится использовать дополнительные методы.
Способы удаления или скрытия категорий из публикаций
1. Использование параметров запроса WP_Query
Если у вас есть контроль над выводом записей через WP_Query, вы можете исключить определённые категории по ID с помощью параметра category__not_in. Например, чтобы исключить категории с ID 5 и 12:
$args = [
'post_type' => 'post',
'category__not_in' => [5, 12],
'posts_per_page' => 10
];
$query = new WP_Query($args);
Так записи из категорий 5 и 12 не попадут в выборку. Это простой и надёжный способ, если вы создаёте кастомные циклы вывода.
2. Исключение категорий в основный запрос через filter pre_get_posts
Если нужно изменить вывод на главной странице или в блоге без изменения шаблонов, можно использовать фильтр pre_get_posts в файле functions.php вашей темы или в плагине. Например, чтобы исключить категории 5 и 12 из главной ленты:
function wpma_exclude_categories_from_home($query) {
if ($query->is_home() && $query->is_main_query()) {
$query->set('category__not_in', [5, 12]);
}
}
add_action('pre_get_posts', 'wpma_exclude_categories_from_home');
Это универсальный способ скрыть категории из стандартного вывода без изменения шаблонов.
3. Скрытие категорий из RSS-ленты
Чтобы исключить категории из RSS, тоже можно использовать фильтр pre_get_posts, но с проверкой на запрос RSS:
function wpma_exclude_categories_from_rss($query) {
if ($query->is_feed() && $query->is_main_query()) {
$query->set('category__not_in', [5, 12]);
}
}
add_action('pre_get_posts', 'wpma_exclude_categories_from_rss');
Так записи из указанных категорий не попадут в RSS-поток.
4. Полное удаление категории из админки с помощью плагина Clearfy Pro
Если вы пользуетесь плагином Clearfy Pro, в нём есть модуль управления таксономиями, который позволяет скрывать категории из фронтенда и админки без кода. Это удобно для тех, кто не хочет писать свои функции и предпочитает визуальный интерфейс.
5. Удаление вывода категории из шаблонов темы
Если вам нужно скрыть отображение категории в метаинформации записи (например, возле заголовка или под ним), можно отредактировать шаблоны темы. Обычно категории выводятся функцией the_category(). Для удаления можно заменить или закомментировать этот вызов в файлах темы, например в single.php или content.php.
Пример комплексного решения: исключаем категории из главного запроса и скрываем их отображение
Ниже пример кода, который можно добавить в functions.php, чтобы исключить категории 5 и 12 из главной страницы, RSS и скрыть их вывод в метаинформации:
function wpma_exclude_categories_everywhere($query) {
if (($query->is_home() || $query->is_feed()) && $query->is_main_query()) {
$query->set('category__not_in', [5, 12]);
}
}
add_action('pre_get_posts', 'wpma_exclude_categories_everywhere');
function wpma_filter_the_category($thelist) {
// ID категорий для скрытия
$exclude = [5, 12];
$categories = get_the_category();
if (!$categories) return $thelist;
$filtered = [];
foreach ($categories as $category) {
if (!in_array($category->term_id, $exclude)) {
$filtered[] = '<a href="' . esc_url(get_category_link($category->term_id)) . '">' . esc_html($category->name) . '</a>';
}
}
return implode(', ', $filtered);
}
add_filter('the_category', 'wpma_filter_the_category');
Этот код исключит категории из выборки записей и из вывода в списке категорий у записи.
Дополнительные советы по работе с категориями
Помимо исключения, можно автоматизировать процесс назначения категорий или их переназначения с помощью плагинов, например WPRemark для массового редактирования метаданных записей.
Также полезно проверять ID категорий через админку — для этого достаточно открыть страницу редактирования категории и посмотреть параметр tag_ID в URL.
Заключение
Удаление или скрытие категорий из публикаций в WordPress — частая задача, решение которой зависит от конкретных требований проекта. Используйте фильтр pre_get_posts для исключения категорий из выборки, редактируйте шаблоны для управления отображением и применяйте плагины для удобства. Такой подход позволит настроить вывод контента максимально гибко и без лишних затрат времени.