Как в WordPress выводить записи по рубрикам

Вывод записей по определенным категориям

Чтобы пользователи оставались на сайте, необходимо предложить им не только хороший текстовый контент и привлекательный дизайн, но и обеспечить удобство пользования функциями. А для этого специалисты по сайтостроению должны иметь хороший инструментарий. Так, очень часто требуется сделать вывод записей по какой-либо категории на странице. Для системы WordPress существует множество различных плагинов, позволяющих осуществить данное действие.

Вывод записей: преимущества и недостатки плагинов

Такие дополнения обладают большим количеством важных функций, таких как:
  • вывод списка по рубрике, категории, тегу;
  • настраиваемый дизайн вывода;
  • использование AJAX запросов;
  • простота в использовании;
  • использование shortcode.
  • вставка в любом месте
Важно! Перед установкой таких плагинов стоит проверять их на совместимость с установленной темой. В противном случае ожидаемого эффекта добиться не удастся.
К недостаткам плагинов какие бы маленькими и скоростными они не были следует отнести:
  • наличие дополнительно подгружаемого кода;
  • дополнительные таблицы стилей;
  • дополнительные JS скрипты;
  • возможная несовместимость с темой и разметкой.
Перед установкой плагина обязательно следует обратить внимание на систему разметки. Если ваша тема не использует Bootstrup, то ее наличие в плагине может привести к существенному замедлению вывода страницы с плагином.

Как обойтись без плагина: инструкция

Даже не имея опыта в программировании, следуя нашей инструкции вы всегда сможете самостоятельно в нужном месте создать «разводящую» страницу.

Итак, приступим…
Для начала зайдем во вкладку ВНЕШНИЙ ВИД → РЕДАКТОР консоли WordPress.

В правой колонке будут перечислены Файлы темы. Ищем нужный нам тэмплэйт и открываем его на редактирование путем клика по файлу. В этом файле описана структура страницы для вывода контента. Подробно останавливаться на системе разметки, в данном случае мы не будем, да и она может отличаться в зависимости от темы. Обратим внимание только на основные функции, которые заключены в php теги. В самом начале подключаем требуемые нам объекты для работы. В самом начале документа, функцией get_header(); мы получаем сформированную шапку сайта. Чуть дальше функция theme_breadcrumb() ; отвечает за вывод крошек (отображение полного пути до содержимого страницы относительно главной). Далее следует требуемый нам php код. В самом начале подключаем требуемые нам объекты для работы.
<?php global $paged, $wp_query, $wp; ?>
где:
  • $paged — текущая страница
  • $wp_query – объект работы с базой данных
  • $wp — объект системы
<?php if (empty($paged) ) {
     if ( !empty( $_GET['paged'] ) ) { $paged = $_GET['paged'];}
     elseif ( !empty($wp->matched_query) && $args = wp_parse_args($wp->matched_query) ) {
      if (!empty( $args['paged'] ) ) {$paged = $args['paged'];}
     }
     if ($paged) $wp_query->set('paged', $paged);
    } ?>
Условие if (empty($paged) ) проверяет переменную на пустоту. И в случае, если она пустая, то пытаемся получить номер страницы из GET запроса и передать ее в переменную. Далее нам нужно установить соединение с базой данных, для чего мы создаем экземпляр класса работы с базой данных new WP_Query();. В дальнейшем при работе с БД мы будем обращаться именно к нему. На всякий случай очищаем объект $wp_query который будет хранить соединение с базой.
<?php $wp_query = null; $wp_query = new WP_Query(); ?>
В переменную $id_text занесем содержимое страницы, если таковое имеется и необходимо для вывода.
<?php $id_text = the_content(); ?>

Теперь для выборки необходимых нам постов следует получить ID текущей страницы и сопоставить его с ID рубрики, которую необходимо вывести на данной странице. Для этого используем следующий код:

<?php ID_Страницы = (int) get_the_ID(); // получаем ID сраницы ?>
Сопоставляем ID страниц и ID рубрик
<?php switch (ID_Страницы) {
    case ID_Страницы: $cat = 'cat=ID_рубрики'; break;
    ...
    case ID_Страницы: $cat = 'cat=ID_рубрики'; break;
    } ?>
Все приготовления на данном этапе закончились. Осталось заняться непосредственно выборкой из постов по категории из базы данных. Для этого приведем нашу конструкцию сопоставления к следующему виду:
<?php switch (ID_Страницы) {
    case ID_Страницы: $wp_query->query( "cat=ID_рубрики&post_type=post&paged=".$paged ); break;
    ...
    case ID_Страницы: $wp_query->query( "cat=ID_рубрики&post_type=post&paged=".$paged ); break;
    } ?>

Напоследок осталось только вывести записи на страницу в цикле для чего добавляем следующие строки.

<?php if ( have_posts() ) {
    while ( have_posts() ) { // начало цикла
      the_post();
      get_template_part( 'content', get_post_format() ); // получаем элемент списка
    }
   }
   echo $textID; // вывод содержимого страницы, если нужно вывести перед списком записей, разместите эту строку выше 17 ?>
Внимание! Во избежание ошибки связанной с циклом необходимо обязательно убедиться в наличии записей путем проверки наличия записей условием if ( have_posts() )
Вот и все. Последний скрипт отвечает за вывод визуальной части. Теперь для каждой страницы будет выводиться не только контент, добавленный обычным путем, но и записи сопоставленной рубрики.