Три простых способа управления отображением постов на главной странице, в архивах, в RSS
Рано или поздно любой WP-блоггер может столкнуться с необходимостью доработки стандардартного вывода постов движком. Ситуации могут быть разными, например, блоггер заводит рубрику-справочник и не хочет, чтобы посты оттуда попадали на главную. Ну или рекламой барыжит. Или ему срочно потребовалось организовать еще один уровень навигации. В общем, мало ли что может прийти в голову блоггеру добавить — если у него блог не в стиле ЖЖ (что вижу то пою). Есть несколько (мне удалось найти и реализовать три) способа управления выводом контента.
1. Правим function.php — управление выводом через категории.
Один из самых простых способов, основанный на исключении из ленты главной страницы (архива/RSS) постов определенной категории. Подойдет, если определяете одну из категорий, как справочник, и хотите, чтобы она была доступна только через меню блога, не засоряя ленту вашим читателям.
Рис. 1 Как узнать ID категории? Необходимо зайти в вашей панели управления в подраздел «Рубрики» раздела «Записи» и навести мышкой на ту рубрику, ID которой вас интересует. В левом нижнем углу ваш браузер покажет ссылку на редактирование рубрики, в которой вы увидите участок «&tag_ID=85″, где 85 и есть тот самый ID, который вас интересует.
Для того, чтобы исключить из ленты главной страницы посты из рубрики с ID=5, открываем файл темы FUNCTION.PHP и добавляем в него следующий код
<div>
<div>
<pre>function removeFromHome($query) {
if ($query->is_home)
{$query->set('cat','-5');}
return $query; }
add_filter('pre_get_posts','removeFromHome');</pre>
</div>
</div>
Чтобы удалить все записи из ленты при листинге
<div>
<div>
<pre>function removeFromHome($query) {
if ($query->is_home && !(is_paged()))
{$query->set('cat','-5');}
return $query; }
add_filter('pre_get_posts','removeFromHome');</pre>
</div>
</div>
Теперь читатели, переходя по страницам вашего блога к более ранним записям, не найдут на нем постов исключенной категории.
Осталось исключить ваши секретные посты еще из RSS
<div>
<div>
<pre>function removeFromFeed($query) {
if ($query->is_feed)
{$query->set('cat','-5');}
return $query; }
add_filter('pre_get_posts','removeFromFeed');</pre>
</div>
</div>
Для исключения нескольких рубрик перечислите их ID через «,»
<pre>{$query->set('cat','-5,-7,-11');}</pre>
2. Правим index.php — управление выводом через теги записей.
Этот способ подойдет, если нам наоборот, нужно на главной вывести только записи с определенными тегами. Например, только записи с тегом «новости», а все каталоги, энциклопедии и личное мнение оставить доступным только по ссылкам из меню.
![]()
Рис.2 Ярлык метки — это значение, которое присваивается вашей метке в базе данных WOPDPRESS. Узнать его можно в подразделе «Метки» раздела «Записи» в таблице меток в колонке «Ярлык».
Чтобы оставить на главной странице посты с определенными метками, нужно открыть файл INDEX.PHP, найти в нем строку
<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?>
И добавить перед ней:
<?php query_posts('tag=yalta'); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
3. Плагин Advanced Category Excluder
Если вы не хотите, не умеете лезть в код, или предложенные варианты не в полной мере решают ваши задачи — используйте плагин ADVANCED CATEGORY EXCLUDER.
Плагин, кстати, хорош еще и тем, что вам не придется каждый раз при смене дизайна править все файлы шаблона. Раз поставили — и все.

Рис.3 После установки плагина АDVANCED CATEGORY EXCLUDER у вас в системе управления WP появляется раздела «ACE», в подразделах «TAGS» и «CATEGORY» в чекбоксах вы можете выбрать, посты и страницы с какими метками и категориями не нужно выводить в архивах, на главной исранице и в RSS




This post has 2 comments
Декабрь 19th, 2011
Похоже третий вариант самый подходящий
Декабрь 19th, 2011
Самый простой — да. Но мне например часто под какие-то задачи проще шаблон поправить, а не вешать лишний плагин, который будет тормозить загрузку блога.