Появилась задача разделить записи по темам и каждую рубрику постить на отдельной странице. Например, на главной странице выводятся все записи, кроме конкретной рубрики, на специальной — только конкретная рубрика.
Плагин Simply Exclude
Простейшим решением оказался плагин Simply Exclude. Не смотря на то, что плагин не обновлялся два года, он прекрасно работает на современном движке WordPress 4.7.4. Плагин Simply Exclude дополняет списки всех видов публикаций (записи, страницы, рубрики и тд.) еще одной колонкой.
В ней можно галочкой отметить то, что не будет отображаться в одном или нескольких перечисленных местах. Например, поставив галочку напротив Front/Home, рубрика «Зал Славы» и все записи этой рубрики не будут показываться на главной странице. Как видите, есть варианты не показывать в архивах, в поиске, определенных виджетах и тд. В разных видах публикаций у плагина есть разные возможности. Кстати, его собственные настройки тоже очень обширные.
Итак, нужную нам рубрику мы исключили из показа на главной странице. Осталось сделать ссылку на эту рубрику или кнопку в меню, чтобы все тематические записи выводились отдельно.
Дополнительный блог. Правка шаблона
Второй способ несколько сложней. Сама идея и код взяты из этой статьи. Опишу простую реализацию этого способа. Итак, у нас есть несколько рубрик, одну из которых мы хотим выводить на отдельной странице. Возьмем рубрику из предыдущего примера «Зал Славы». Создадим новую рубрику «Общая» и назначим её родительской по отношению ко всем рубрикам, исключая «Зал Славы».
Теперь у нас 2 родительские рубрики «Зал Славы» и «Общая» и её дочерняя «Cinematics». На главной странице показывается рубрика «Общая» и все её подрубрики. На отдельной рубрика «Зал Славы». Далее нам необходимо отредактировать шаблон главной страницы и вставить туда следующий код:
1 2 3 |
<?php query_posts('paged='.get_query_var('paged').'&cat=tag_ID'); ?> |
Найти нужный нам tag_ID несложно. Можно просто посмотреть ссылку, наведя мышь на название рубрики. Можно установить замечательный плагин Reveal IDs, который добавляет свою колонку ко всем объектам, где отображается тот самый ID. Он Вам еще много раз пригодится для разнообразных нужд.
Теперь мы знаем ID всех рубрик и можем править код шаблонов. Обязательно сделайте копию всех файлов, которые Вы будуте править! Итак, выше приведенный код вставляется перед циклом вывода всех постов. Кстати, в той же статье говорится о том, что не ко всем шаблонам WordPress этот метод подходит из-за разного php кода. Так что сделать копию файлов, как уже отмечалось выше, просто необходимо. Ниже это реализовано для классического шаблона Twenty Eleven. За главную страницу там отвечает файл index.php, находящийся в директории wp-content/themes/twentyeleven/. Копируем этот файл и переименовываем, например, в glory.php. Теперь вставляем код в файл index.php с известным нам tag_ID рубрики. Выглядит это следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<?php /** * The main template file. * * This is the most generic template file in a WordPress theme * and one of the two required files for a theme (the other being style.css). * It is used to display a page when nothing more specific matches a query. * E.g., it puts together the home page when no home.php file exists. * Learn more: http://codex.wordpress.org/Template_Hierarchy * * @package WordPress * @subpackage Twenty_Eleven */ get_header(); ?> <?php echo do_shortcode("[metaslider id=1721]"); ?> <div id="primary"> <div id="content" role="main"> <?php if ( have_posts() ) : ?> <?php twentyeleven_content_nav( 'nav-above' ); ?> <?php /* Start the Loop */ ?> <!----- БЛОГ ДЛЯ ЗАПИСЕЙ РУБРИКИ "ОБЩАЯ" id=79 ----> <?php query_posts('paged='.get_query_var('paged').'&cat=79'); ?> <!----- БЛОГ ДЛЯ ЗАПИСЕЙ РУБРИКИ "ОБЩАЯ" id=79 ----> <?php while ( have_posts() ) : the_post(); ?> <?php get_template_part( 'content', get_post_format() ); ?> <?php endwhile; ?> <?php twentyeleven_content_nav( 'nav-below' ); ?> <?php else : ?> <article id="post-0" class="post no-results not-found"> <header class="entry-header"> <h1 class="entry-title"><?php _e( 'Nothing Found', 'twentyeleven' ); ?></h1> </header><!-- .entry-header --> <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.', 'twentyeleven' ); ?></p> <?php get_search_form(); ?> </div><!-- .entry-content --> </article><!-- #post-0 --> <?php endif; ?> </div><!-- #content --> </div><!-- #primary --> <?php get_sidebar(); ?> <?php get_footer(); ?> |
Теперь редактируем наш новый файл шаблона glory.php.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<?php get_header(); ?> <?php /* Template Name: Блог Зала Славы */ ?> <div id="primary"> <div id="content" role="main"> <?php if ( have_posts() ) : ?> <?php twentyeleven_content_nav( 'nav-above' ); ?> <?php /* Start the Loop */ ?> <!----- БЛОГ ДЛЯ ЗАПИСЕЙ РУБРИКИ id=85 "ЗАЛ СЛАВЫ"----> <?php query_posts('paged='.get_query_var('paged').'&cat=85'); ?> <!----- БЛОГ ДЛЯ ЗАПИСЕЙ РУБРИКИ id=85 "ЗАЛ СЛАВЫ"----> <?php while ( have_posts() ) : the_post(); ?> <?php get_template_part( 'content', get_post_format() ); ?> <?php endwhile; ?> <?php twentyeleven_content_nav( 'nav-below' ); ?> <?php else : ?> <article id="post-0" class="post no-results not-found"> <header class="entry-header"> <h1 class="entry-title"><?php _e( 'Nothing Found', 'twentyeleven' ); ?></h1> </header><!-- .entry-header --> <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.', 'twentyeleven' ); ?></p> <?php get_search_form(); ?> </div><!-- .entry-content --> </article><!-- #post-0 --> <?php endif; ?> </div><!-- #content --> </div><!-- #primary --> <!----- уберем сайдбар, если нужно -- < ?php get_sidebar(); ?> --> <?php get_footer(); ?> |
Далее создаем новую страницу «Зал Славы» и в свойствах страницы выбираем шаблон «Блог Зала Славы».
В итоге получаем 2 страницы записей: одна главная, куда выводятся все записи рубрики «Общая» и её дочерних рубрик, а также вторая страница, содержащая рубрику «Зал Славы».
Этими способами можно сделать и три, и четыре, и больше различных страниц с записями из определенных рубрик.