sanches.free
21 просмотр
Убрать рубрику из общей выдачи: pre_get_posts и category__not_in на главном запросе
Разбор задачи
Отрицательный список идентификаторов рубрик на хук pre_get_posts снимает указанные категории именно из is_home или архивов записей без дубля логики в шаблоне.
<?php
add_action('pre_get_posts', static function ($query): void {
if (is_admin() || !$query->is_main_query()) {
return;
}
if (!($query->is_home() || $query->is_post_type_archive('post'))) {
return;
}
$omit = array(12, 34); // ID рубрик, которые не нужны в общей ленте
$query->set('category__not_in', $omit);
});Сверяйте ID в консоли «Записи → Рубрики» колонкой term_id; несколько исключений перечисляйте массивом, не строкой через запятую.
Замечания перед выкладкой
Вносите правки только через среду с бэкапом и понятным diff. Если нужна выборочная фильтрация только на главной а не во всех архивах, сузьте условие is_home() и протестируйте category feed.
Не хотите копаться сами?
Починю за 1-3 дня. Без предоплаты — оплата по результату.
15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии