Yandex Metrika
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 дней гарантии