Исключаем категории из архива или с главной страницы WordPress

Сайт OnWordpress.ru продается

Оптимальная цена 300 000 рублей

Подробнее

Рекомендую прочитать новую статью: Как исключить записи одной категории с главной страницы WordPress.

Иногда бывает просто наобходимо исключить записи определенной страницы из архива или с главной страницы блога на WordPress. Для этого можно использовать различные плагины, благо таких сейчас достаточно. Но я, как уже много раз писал, не сторонник плагинов. Поэтому, когда я столкнулся с подобной необходимостью, я начал искать оптимальный для меня вариант. В итоге, решение нашлось непосредственно в кодексе WordPress, причем достаточно простое.

Изложу суть своей задачи, быть может ее решение будет кому-то полезным. На одном сайте нужно было сделать календарь анонсов. Специально для анонсов я создал отдельную рубрику. Календарь использовал тот, который встроен в WordPress. Но тут возникает проблема – при вызове архива за определенный день, выводятся все записи опубликованные в этот самый день. А мне нужно было получить только записи из рубрики анонсы. Соответственно, для этого мне нужно исключить все записи всех других рубрик. Вот как я поступил.

Я создал файл loop-archive.php, соответственно при вызове архива, срабатывает именно этот файл. Для этого в файле archive.php петля должна вызываться следующим образом:

<?php

         rewind_posts();

          get_template_part( 'loop', 'archive' );

?>

В файле loop-archive.php я прописал код петли, который мне был необходим, а именно:

<?php if ( ! have_posts() ) : ?>

         <div id="post-0">

                   <h1 class="entry-title"><?php _e( 'Not Found', 'twentyten' ); ?></h1>

                   <div class="entry-content">

                            <p><?php _e( 'Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post.', 'twentyten' ); ?></p>

                            <?php get_search_form(); ?>

                   </div><!-- .entry-content -->

         </div><!-- #post-0 -->

<?php endif; ?>

<?php while ( have_posts() ) : the_post(); ?>

<?php if ( !in_category('5') ) continue; ?>

<div id="post-<?php the_ID(); ?>">

Содержимое поста на странице архива

 </div><!-- #post-## -->

<?php endwhile; ?>

Петля, в принципе стандартная, но я добавил лишь некоторые изменения:

<?php if ( !in_category('5') ) continue; ?>

Собственно этот код является своеобразным фильтром, который включает в архив только те записи, которые содержатся в рубрике «5» - это рубрика «Анонс», нужная мне категория. Все остальные записи из других рубрик просто пропускаются. Таким образом можно исключать или включать необходимые категории. Если убрать восклицательный знак, то мы наоборот исключим категорию с ID=5, все записи из остальных категорий будут показываться в архиве. Экспериментируя над кодом, можно добиться необходимых результатов, в зависимости от поставленных задач.

Расскажите друзьям
Нравится блог? - Читайте ВКонтакте
Ответим на Ваши вопросы в комментариях