Отображение записей блога на любой странице (с навигацией). Различные возможности вывода записей на странице WordPress Wordpress как вывести записи на определенной странице

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

Зачем и когда нужно выводить все записи на одной странице?

В WordPress есть строенная страница архива для каждой рубрики, тегов, авторов и даты.

Многие владельцы сайтов, всё же предпочитают создавать собственные страницы архивов на своих сайтах. На этих страницах обычно выделяют популярные записи, выводят архив по датам в виде аккордеона, отображают список рубрик или же облако тегов и т.д.

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

Выводим все записи WordPress на одну страницу

Существует множество различных способов для отображения всех записей на одной странице. Можно вывести статьи а страницу шорткодом, можно отобразить их с помощью плагина, и, никонец, можно показать все записи на странице при помощи произвольного шаблона и цикла.

Мы расскажем о всех трех способов, и начнем с самого простого.

Способ 1: Используем плагин Display Posts Shortcode

Первым делом вам необходимо установить и активировать плагин Display Posts Shortcode .

Плагин работает «из коробки» и не нуждается в дополнительной настройке.

Продолжаем, и создаем новую страницу, называем её «Архивы» или как пожелаете. После этого вставляем в неем следующий шорткод:

Этот шорткод выведет простой список всех заголовков ваших записей в хронологическом порядке. В параметрах шорткода указан лимит на 1000 записей на страницу.

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

Хотя вы можете использовать вышеуказанный шорткод для отображения цитат, миниатюр и другой сопутствующей информации, мы не рекомендуем это делать. В виду того, что вы выводите все свои записи на одной странице, эта страница будет очень длинной, и нужно сделать так, чтобы она была максимально простой и красивой. Здесь как раз будет уместно вывести только лишь заголовки записей.

Если же вам потребуется вывести записи на странице в зависимости от рубрики или по другим параметрам, то сделать это можно будет, ознакомившись с документацией плагина .

Способ 2: Используем плагин Simple Yearly Archive

Если вывести все свои записи WordPress на одной странице, то ее нужно будет долго прокручивать. Этого можно избежать, если отображать список записей, сгруппированных по годам. Пользователи смогут нажать на нужный год и развернуть его, а затем уже ознакомиться с публикациями за выбранный год.

Для начала вам потребуется установить и активировать плагин Simple Yearly Archive .

После активации переходим на страницу Настройки » Simple Yearly Archive для настройки плагина.

Этот плагин позволит вам вывести список записей в различных вариациях. Можно отобразить их все под ссылками на годовой архив, или же вывести в «свернутый» список каждого года.

Если вы хотите вывести их под названием года, то потребуется добавить

and
рядом с опцией ‘Before / After (Year headline)’.

Остальные настройки плагина говорят сами за себя, поэтому каждый решит самостоятельно, какие опции стоит отметить.

Не забудьте нажать на кнопку сохранения изменений.

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

У плагина есть множество параметров, которые можно использовать в шорткоде. Ознакомиться с полным списком параметров можно на странице документации .

Способ 3: Выводим все записи WordPress на одной странице с помощью кода шаблона

Использование плагина для вывода всех записей на одной странице — самое простое решение, но может быть некоторые из вас захотят реализовать это с помощью кода в шаблоне страницы.

Для начала создаем произвольный шаблон страницы и копируем в него оформление из своего файла page.php.

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

"post", "post_status"=>"publish", "posts_per_page"=>-1)); ?> have_posts()) : ?>

    have_posts()) : $wpb_all_query->the_post(); ?>
  • ">

Если вышеприведенный код не имеет для вас смысла, тогда мы рекомендуем использовать Способ 1.

Используя WordPress , как обычный блоговый движок с готовой темой, подобный вопрос у нас бы не возник. Мы просто не вмешиваемся в алгоритмы работы CMS , записи сами как-то выводятся. В каком случае вывод записей WordPress нас начинает интересовать?

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

Структура темы под WordPress

Что представляет из себя тема WordPress ? Это набор файлов (шаблоны), состоящих из HTML кода вперемешку с PHP кодом. В любой теме, как минимум должны быть два файла: index.php и CSS файл стилей. HTML код - это и есть верстка уникального дизайна, а PHP код состоит из функций и тегов, уже описанных в ядре WordPress , файлы ядра мы никогда не трогаем.

Запомните, что весь HTML код должен находится за пределами открывающих и закрывающих тегов PHP . Напротив, весь PHP код пишется только внутри тегов. Например выведем имя автора записи в цикле WordPress:

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

Теги шаблонов вывода записей WordPress

the_permalink
the_title
the_time
the_content
the_author
the_excerpt
the_category

С помощью этих тегов шаблонов выводятся статьи на главной странице WordPress в шаблоне index.php .

">

Выводим дату создания записи:

Давайте выведем саму статью - контент, внутри тега div:



Внимание! Ничего не вывелось. Почему? Поскольку эти теги шаблонов выводят только внутри цикла, вне цикла они не работают. Мы должны весь этот код, поместить внутри цикла. Весь PHP и HTML код внутри цикла повторится столько раз, сколько будет у нас записей. Смотрите код ниже.



Сюда помещаем, весь код выше. Мы находимся внутри цикла.



Давайте разберем, что означает код выше. Мы задаём условие, если в базе данных имеются записи, то будет выводится заголовок, дата создания и контент записи.

Если посты есть, то в цикле while выполняется функция the_post , которая занимается выводом всех записей , до тех пор, пока они есть.

Закончили цикл и условие.


Цикл будет работать до тех пор, пока имеются записи, количество вывода записей на страницу задаётся в настройках блога. Если записей больше, то на страничке появятся элементы пагинации. Таким образом на блоге будут выведены все записи, и WordPress автоматически создаст страниц столько, сколько надо.

Мы познакомились лишь с некоторыми функциями для построения темы для WordPress - это функции вывода записей . Однако здесь важно понять принцип, а не пытаться запомнить или заучить.

Практика

Рассмотрим вывод записей на примере темы Twenty Seventeen . Записи выводятся через тег шаблона get_template_part в цикле шаблона index.php , который передаёт в параметрах содержимое шаблона content.php .

if (have_posts()) :
/* Start the Loop */
while (have_posts()) :
the_post();
get_template_part("template-parts/post/content", get_post_format());
endwhile;
endif; ?>

В шаблоне content.php выводится заголовок поста с ссылкой на сам пост и контент.

Здравствуйте уважаемые читатели блога WP Developer. В статье « » я рассказывал, что это такое такое, приводил пример стандартных типов записей и описывал процесс их создания. Но сам процесс создания не является конечным, т.к. записи потом нужно как то выводить на сайте. Как раз в этой статье я хотел бы показать Вам два способа вывода архива таких статей (без пагинации и с пагинацией) и показать, как выводить отдельную произвольную запись. Все манипуляции я буду производить в стандартной теме WordPress — twentyseventeen . Итак, поехали.

Вывод всех записей на одной странице (без пагинации)

Иногда требуется вывести архив произвольного типа записей на одной странице. Ну мало ли какие могут быть требования у заказчика. Вдруг ему понадобится именно такой вариант вывода. Для примера я создал новый тип записей Отзывы с идентификатором reviews . Сам процесс описывать не буду. Для этого Вы можете кликнуть по ссылке , где все подробно описано. Я лишь только визуально покажу, как это выглядит в меню (См. рисунок):

На следующем шаге в папке с Вашей темой нужно создать отдельный шаблон для вывода архива. Я назвал его reviews.php . Внутри этого шаблона прописываем следующий комментарий:

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

"reviews", "posts_per_page" => -1)); ?>

have_posts()) : while ($reviews->have_posts()) : $reviews->the_post(); ?>

">

Стилизацию я проводить не буду, поскольку нам важно понять сам процесс, а не увидеть внешний вид страницы.

Готово. Теперь добавив страницу Отзывы в меню, перейдите на нее, и Вы сможете увидеть весь список добавленных отзывов.

Вывод постов в виде категории (с пагинацией)

Если Вам необходимо вывести список произвольного типа записей с пагинацией, т.е. как выводится любая из рубрик, то в папку с Вашей темой всего лишь нужно добавить новый файл со следующим названием — archive-{идентификатор_произвольного_типа_записей}.php . В моем случае этот файл будет называться так — archive-reviews.php . Далее в файл добавляете цикл вывода (уже без комментария Template Name: Отзывы) и посты будут выводиться как категории — с пагинацией. Код может выглядеть так:

have_posts()) : while ($reviews->have_posts()) : $reviews->the_post(); ?>

">

Как Вы заметили, мы уже не получаем посты при помощи класса WP_Query , в этом нет необходимости. WordPress сам поймет, к какому типу записей относится данный шаблон и выведет именно их.

Теперь при переходе по данной ссылке у вас может появиться примерно такое сообщение — «Извините, но запрашиваемая Вами страница не найдена «. Данная проблема решается довольно простым способом. Нужно перейти в раздел Настройки->Постоянные ссылки и ничего не меняя нажать на кнопку Сохранить.

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

Итак, мы выяснили как можно выводить архив произвольного типа записей с пагинацией и без нее. Теперь нам осталось вывести отдельный пост. В принципе, если Вас устраивает внешний вид страницы, которая в текущий момент выводит отдельный пост, то можете ничего и не создавать, с этим справится файл single.php . Если же Вы хотите изменить внешний вид нового типа записей, например, убрать сайдбар или вообще по другому стилизовать страницу, то нужно создать файл со следующим названием — single-{идентиикатор_произвольного_типа_записей}.php , и в нем уже прописать код для вывода поста с нужными стилями. В моем случае он будет называться так — single-reviews.php .

На этом все. Надеюсь статья была для Вас полезной. Всем удачи!!!

Для удобства посетителей, и для ускорения индексации статей поисковыми системами создаются карты (содержание) сайта, как в формате XML, так и в HTML. В XML-формате карта сайта подходит только для поисковых систем, а в HTML можно вывести все записи, и она ориентирована посетителей, но для поисковиков это тоже плюс.

Небольшое отступление от темы.
Решил сделать небольшой редизайн блога. Целый вечер редактировал стили сайдбара. Как видите, теперь он другого цвета + обновленная .
Сам шаблон блога теперь «нерезиновый» и имеет фиксированную ширину, а под каждым постом добавил социальные кнопки от Addthis. Вот такие дела

Вернемся к главному — списку всех статей блога на одной странице.

Хотел я сделать HTML-карту блога с помощью плагина , но мне он не понравился тем, что если запись принадлежит двум рубрикам, то названия записей повторяются, то есть получается такой эффект, как будто на блоге в несколько раз больше записей, чем на самом деле. Карта блога представляет из себя следующую структуру, (если записи выводить по рубрикам):



Дата записи / Название записи из рубрики 1
Дата записи / Название записи из рубрики 1 и рубрики 2 // повтор названия записи!

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

В итоге я решил сделать простой нумерованный список всех записей блога по убыванию (по дате публикации) .

Итак, приступим.

Создаем копию файла темы page.php и переименовываем его во что-нибудь другое, например soderzhanie.php. После открываем в редакторе NotePad++ и изменяем код:

До редактирования код выглядит примерно так:

1 2 3 4 5 6 7 8 9 10 11 12 13 14

"" ) ) ; comments_template() ; endwhile ; } get_footer() ; ?>

"")); comments_template(); endwhile; } get_footer(); ?>

Оставляем только функции вывода header-a и footer-a, а content нам нафиг не нужен

Туда, где написано Здесь был Вася «Здесь будет код для вывода всех записей блога!» Вставляем следующий код:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 "post" , "post_status" => "publish" , "posts_per_page" => - 1 , "caller_get_posts" => 1 if ($moi_zapros -> have_posts () ) : print "Все посты: пример" . "

Все записи блога:

    " ; while ($moi_zapros -> have_posts () ) : $moi_zapros -> the_post () ; ?>
  1. " target="_blank">
  2. ?>

"post", /* Отбираем только записи. */ "post_status" => "publish", /* И только опубликованные. */ "posts_per_page" => -1, /* Снимаем ограничение на количество показываемых записей на одну страничку. */ "caller_get_posts" => 1 /* Игнорируем особенности записей-липучек. */);$moi_zapros = null;$moi_zapros = new WP_Query($parametri); /* Формируем новый "нестандартный" запрос. */if ($moi_zapros->have_posts()): print "Все посты: пример". "

Все записи блога:

    "; while ($moi_zapros->have_posts()) : $moi_zapros->the_post(); ?>
  1. " target="_blank">
  2. ";endif;wp_reset_query(); /* Сбрасываем нашу выборку. */?>

    Окончательный код файла soderzhanie.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 /** * Template name: Все посты // имя шаблона страницы */ $parametri = array ( "post_type" => "post" , /* Отбираем только записи. */ "post_status" => "publish" , /* И только опубликованные. */ "posts_per_page" => - 1 , /* Снимаем ограничение на количество показываемых записей на одну страничку. */ "caller_get_posts" => 1 /* Игнорируем особенности записей-липучек. */ ) ; $moi_zapros = null ; $moi_zapros = new WP_Query($parametri ) ; /* Формируем новый "нестандартный" запрос. */ if ($moi_zapros -> have_posts () ) : print "Все посты: пример" . "

    Все записи блога:

      " ; while ($moi_zapros -> have_posts () ) : $moi_zapros -> the_post () ; ?>
    1. " title="Постоянный линк для: " target="_blank">
    2. " ; endif ; wp_reset_query() ; /* Сбрасываем нашу выборку. */ ?>

    "post", /* Отбираем только записи. */ "post_status" => "publish", /* И только опубликованные. */ "posts_per_page" => -1, /* Снимаем ограничение на количество показываемых записей на одну страничку. */ "caller_get_posts" => 1 /* Игнорируем особенности записей-липучек. */);$moi_zapros = null;$moi_zapros = new WP_Query($parametri); /* Формируем новый "нестандартный" запрос. */if ($moi_zapros->have_posts()): print "Все посты: пример". "

    Все записи блога:

      "; while ($moi_zapros->have_posts()) : $moi_zapros->the_post(); ?>
    1. " title="Постоянный линк для: " target="_blank">
    2. ";endif;wp_reset_query(); /* Сбрасываем нашу выборку. */?>

      За вывод записей на WordPress у нас отвечает отдельный файл шаблона – single.php . Однако, это вывод одной записи внутри цикла, который определяется функциями бесплатного движка и не создает никакой сложности. Но как вывести записи wordpress на другой странице или же на главной странице?


      get_posts()

      В данном случае нам понадобится функция get_posts() . С ее помощью мы можем получить доступ ко всем постам по нужным нам критериям. Плюсов у этого метода достаточно много, одним из них является возможность сортировки постов по дате, наименованию, ID и др. Список всех аргументов достаточно большой, просмотреть вы его сможете в кодексе WordPress, а мы же рассмотрим на прямом примере только самый необходимый набор для выполнения поставленной задачи.

      Итак, принцип работы функции:

      $posts = get_posts($args);

      Как вы понимаете, в переменной $args мы задаем все необходимые параметры вывода наших постов. В переменной posts мы получаем массив данных, который готов к выводу в цикле. После завершения цикла не забываем использовать функцию wp_reset_postdata() , которая позволит нам избежать багов на странице с дополнительными циклами, связанными с выводом записей. Наш код будет выглядеть следующим образом:

      9 , "category" => 1, "orderby" => "date"); $myposts = get_posts($args); foreach($myposts as $post){ setup_postdata($post); ?>

      ">

      Это уже полностью готовый код для вставки в нужное для вас место шаблона вашей темы. Немного поясню по поводу заданных аргументов. В параметре numberposts мы задаем количество выводимых записей, в category – указываем ID категории, а orderby у нас отвечает за сортировку по дате.

      В цикле уже используется обычный шаблон с выводом миниатюры, ссылки на запись, заголовок и дата публикации. Как видите, все достаточно просто, теперь вы сможете выводить записи wordpress в любом месте своей темы.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: