Способов исключения показа записей определенной рубрики на главной странице блога несколько. Больше всего мне нравится метод с добавлением своего фильтра в файл functions.php, так как это избавляет от необходимости править другие файлы шаблона, а в частности не надо возиться с переделкой цикла вывода записей в index.php через query_posts(). Рассмотрим самый простой пример: удаляем записи рубрики с ID=5
с главной страницы, для этого добавим в файл functions.php код:
function removeFromHome($query) { if ($query->is_home) {$query->set('cat','-5');} return $query; } add_filter('pre_get_posts','removeFromHome');
Теперь на главной странице не будут присутствовать записи из рубрики с ID 5
. Хочу напомнить, что в понимании WordPress главной страницей считается также и любая другая страница, образованная постраничной навигацией. То есть посты из рубрики 5
вы не увидите и на /page/2, /page/3
и др. Если вас это не устраивает, то вы должны слегка модифицировать приведенный код.
function removeFromHome($query) { if ($query->is_home && !(is_paged())) {$query->set('cat','-5');} return $query; } add_filter('pre_get_posts','removeFromHome');
Теперь и на странице /page/2
и на следующих страницах записи рубрики с ID 5
будут показываться. Аналогичным способом можно исключить показ записей рубрики не только с главной страницы. Например, для исключения записей рубрики из страницы результатов поиска вам надо поменять is_home
на is_search
. Для исключения нескольких рубрик перечислите их ID
через запятую, то есть '-5,-6,-7'
и т.д.
Что если нам не надо исключать записи рубрик из блога, но надо исключить их из RSS-ленты? Используем тот же самый код:
function removeFromFeed($query) { if ($query->is_feed) {$query->set('cat','-5');} return $query; } add_filter('pre_get_posts','removeFromFeed');
И в вашей ленте не будут присутствовать записи из указанной рубрики. Если надо совместить удаление записей рубрики и c главной страницы и из фида используйте что-то типа:
function removeCat($query) { if ($query->is_feed || ($query->is_home && !(is_paged()))) {$query->set('cat','-5,-34');} return $query; } add_filter('pre_get_posts','removeCat');
Данный код удалит записи рубрик с ID 5
и 34
и из RSS-ленты и из главной страницы блога, но будет их показывать, если главная страница сменилась на /page/2
и следующие, образованные постраничной навигацией.
Дополнительная информация:
Источник:
WordpressPlugins.ru
Плагин Ultimate Category Excluder
Комментарии (0)