WordPress Россия

Удаление записей рубрики с главной страницы WordPress.

Добавлено 17 апреля 2010 в категорию Плагины.

Способов исключения показа записей определенной рубрики на главной странице блога несколько. Больше всего мне нравится метод с добавлением своего фильтра в файл 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');

И вашей ленте не будут присутствовать записи из указанной рубрики. Если надо совместить удаление записей рубрики и из главной страницы и из фида используйте что-то типа:

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 и следующие, образованные постраничной навигацией.

Категории