Исключение рубрик с главной страницы
Способов исключения показа записей определенной рубрики на главной странице блога несколько. Больше всего мне нравится метод с добавлением своего фильтра в файл 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 и следующие, образованные постраничной навигацией.
Понравился пост? Подпишись на обновления по RSS или Twitter !
Https://relatoseroticos-gratis.com/erotismo-y-amor https://relatoseroticos-gratis.com/erotismo-y-amor а relatoseroticos-gratis.com |
#101,
Искала решение аналогичной проблемы. Нашла у Вас. Но после изменений в functions.php ничего не изменилось. Может какой плагин мешает этому.
Мне надо, чтобы публикации не выходили на главной и в RSS.
И еще один вопрос: у Вас постраничная навигация в черно-белом варианте. Не подскажете как такое сделать? И форма коментариев на моем блоге стоит стандартная: в общем кошмарная. Помогите, как исправить?
#102,
воспользуйтесь плагином Ultimate Category Excluder, так вам будет проще.
плагин WP-PageNavi и стили к нему тут и тут.
тут помочь не могу, форма комментариев настраивается в каждом шаблоне индивидуально и общих css-стилей быть не может.
#103,
Здравствуйте!
А не подскажите ли случайно, какой код нужно прописать, чтобы записи, как можно сделать, чтобы статьи не отображались в родительской рубрике, а отображались только в заданной рубрике? Не хочется дублирования информации на блоге.
Пример: в родительской рубрике http://ekaterinagabzevich.ru/category/blogging/ дублируются записи из рубрики http://ekaterinagabzevich.ru/categor...ress-blogging/
Буду очень благодарна за отвте.
С уважением.
#104,
вам бы в поиск. например тут код есть. а вообще там надо с кодом мудрить, просто так не получится.
#105,
Сложно искать, когда не знаешь, что искать.
Спасибо за ответ. Вот, если бы подсказали, куда данный код вставить... я не программист, к сожалению...
#106,
ну вот поэтому у вас и не получится. тут нельзя просто вставить куда-то код, чтобы все заработало. надо переделывать цикл вывода записей, а это так просто не подсказать. возможно, что есть и более простой способ, но я так сходу его не нашел.
#107,
Спасибо большое, убрал с помощью первого способа через functions.php!
#108,
Большое спасибо.
Нашёл несколько способов. Один не заработал, второй был не особо прозрачным.
Ваш код заработал на ура.
Успехов.