http://wm-monitoring.ru/ ')) {alert('Спасибо за то что установили нашу кнопку! =)');} else {alert('Очень жаль! =(');}"> http://wm-monitoring.ru/

WordPress - query_posts против pre_get_posts.

Опубликовано: 07.09.2017

Небольшое вступление

Сегодня я продолжаю изучать тонкости API WordPress. Приступим к делу. Итак, помимо всеми используемой функции query_posts существует также возможность корректировать выборку записей на уровне фильтров. Имя такому крючку дано соответствующее pre_get_posts.

Пример кода установки фильтра

В качестве демонстрации исключим вывод записей из трех заданных рубрик с главной страницы нашего вордпрессного бложика.

<?php add_filter ( 'pre_get_posts' , 'hideCategory' ) ;   function hideCategory ( $variable ) { if ( $variable -> is_home ) { $variable -> set ( 'cat' , '-32,-3,-100' ) ; } return $variable ; } ?>

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

Краткие пояснения

Подобный код не будет работать для прикрепленных записей (is_sticky), но он прекрасно учтет все записи, принадлежащие дочерней рубрики относительно исключаемой родительской.

Вешаем хук на то, что я уже упомянул выше, функцией hideCategory, где 32, 3 и 100 - это идентификаторы рубрик. Записаны они со знака минус, т.к. именно их и требуется исключить. Использовать, как обычно в «functions.php».

Карта
rss