WordPress 3.1, как убрать посты из определенной категории с главной страницы и RSS?
Вам, как и Мне может понадобиться возможность того, чтобы некоторые сообщения, которые вы пишете в свой блог на WordPress не попадали на главную страницу или в RSS ленту. Причины для этого могут быть разные. Возможно, в эту категорию вы пишете отвлеченные заметки и не хотите, чтобы подписчики получали их по rss. Либо размещаете статьи с того же Миралинкс, и не хотите, чтобы они попадали на главную страницу и rss.
До недавнего времени Я пользовался фильтром, который внес в файл functions.inc, и все прекрасно работало. Но вот, в один прекрасный, или не очень момент, Я решил обновить свой WP на последнюю версию 3.1. И меня ждал неприятный сюрприз. Несколько постов, которые не должны были быть видны, попали в rss. Ну, это конечно не смертельно, но неприятно.
Изменения в WordPress 3.1
Обновления WordPress, принесли изменения, которые поменяли принцип работы фильтров, и проведя некоторое время в поиске информации – Я, наконец, нашел, что же случилось. А точнее, что необходимо сделать, чтобы все вернулось на свои места.
Что необходимо сделать?
Нужно обновить исходный код фильтра, отредактировав файл functions.php.
Новый код фильтра:
function exclude_category($query) {
if ( $query->is_feed or $query->is_home ) {
$query->set('category__not_in', array(1, 2, 3));
}
return $query;
}
add_filter('pre_get_posts', 'exclude_category');
Этот код убирает все посты из категорий с идентификаторами 1, 2, 3 с главной и из rss ленты. Если вам необходимо что – то одно, уберите соответствующую проверку (is_feed или is_home).
Чтобы узнать идентификатор рубрики, перейдите в раздел рубрик в админке, и кликнув на изменение параметров необходимой рубрики в строке адреса сайта найдите текст tag_ID=XX, собственно XX – это и есть идентификатор рубрики, который необходимо вписать в код фильтра.
За найденное решение спасибо автору блога Hyper SEO, а вот его статья об этой проблеме.


