Как скрыть некоторые категории постов из ленты и RSS без плагинов

В процессе работы над новым дизайном Terehoff.com возникла необходимость отфильтровывать некоторые данные, чтобы исключить их попадание на главную и RSS. Раньше обычным решением в таком случае был плагин Advanced Category Excluder, однако автор забил на свое детище, оставив кучу народа без поддержки, а в новых версиях WordPress плагин безбожно глючит. Немного погуглив, нашел решение, которое оказалось достаточно гибким и полностью меня устроило.

Исключить посты с главной страницы

Легко понять, что ID исключаемых категорий нужно вставить в 3 строку, разделив пробелом и поставив перед каждой минус.

Исключить посты из RSS

Эта функция практически аналогична предыдущей, изменились только тип страницы и фильтр.

Эти функции нужно вставить в functions.php вашей темы.

P.S. Исходя из кода, скорее всего, подобным образом можно отфильтровывать различные данные и на страницах разного типа, но сам не проверял.

  • Kate

    Спасибо за подсказку!
    Вопрос немножко не по теме, но про вордпресс — а вы случайно не знаете, как убрать преобразование кавычек в теле комментария? Вот для контента есть:
    remove_filter(‘the_content’, ‘wptexturize’);

    А как в комментариях можно убрать?

    • Попробуйте

      • Kate

        Спасибо большое! Всё работает! 🙂

  • Если вы заходите на ленту напрямую (нажав по ссылке), то категории можно исключать динамически.

    Пример (формат ссылки будет зависеть от структуры пермалинков на вашем сайте):

    Исключаем категории 1, 2 и 3:
    адрес_сайта/?feed=rss2&cat=-1,-2,-3

    Показываем только категории 4 и 5:
    адрес_сайта/?feed=rss2&cat=4,5

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

  • О, полезная штучка. Довольно часто появляется необходимость что-либо скрыть, не публиковать в RSS, но как сделать — непонятно. Теперь есть, что попробовать

  • А что если нужно проще сделать — не скрывать записи, а просто из меню в шаблоне просто срыть ссылки на некоторые категории, но не записи из них. Пока делаю это грубо: в месте вывода категорий беру хтмл код, удаляю лишнее, и вставляю на место wp_list_categories, может есть решение более удобное?

    • Neolot

      В wp_list_categories есть опция exclude, с помощью которой можно убрать лишние категории

      • ага, оказывается в шаблоне уже была одна категория так скрыта, просто дописал остальные, а ещё это умеет плагин
        category-visibility-ipeat! работает на 3.0.5, может скрыть как с материалами так и просто из списков убрать категорию ) вот так, два прекрасных варианта