Как вывести все записи WordPress на одной странице. Как вывести последние записи в WordPress Использование виджета свежих записей

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

Например, если вы отображаете статическую страницу в качестве главной страницы (как указано в Настройках чтения ), вы можете захотеть показывать список записей отдельно, например на отдельной странице "blog ". К этому пришел я, когда делал свой блог xy.css , при этом используя статичную (без записей блога) главную страницу. Мне нравится такой подход, поскольку навигация по записям в таком виде работает интуитивно, например, так:

Это чрезвычайно полезно при специфических настройках CMS, например, когда главная страница используется в качестве форума, электронного магазина или навигационной страницы. Вот инструкция для таких случаев, как отображать записи блога на своей странице (с навигацией!)

Шаг 1. Шаблон страницы

Создайте пустой шаблон страницы, назовите его page-blog.php и добавьте туда следующий код:

query("showposts=5" . "&paged=".$paged); while ($wp_query->have_posts()) : $wp_query->the_post(); ?>

" title="Read more">

1) { ?>

Собственно, все. Теперь просто подключите его и напичкайте своими собственными параметрами для WP_Query - и готово. Например, вместо того, чтобы отображать 5 записей, вы можете установить showposts=10 или столько, сколько вам будет угодно.

Обратите внимание, что навигация по постам содержит условия, чтобы на первой странице записей (то есть, на вашей странице /blog/ ) не отображалась пустая разметка/стили для ссылки "Следующие записи ". Здесь вы можете узнать больше об оптимизации навигации по записям WordPress.

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

Шаг 2. Добавление новой страницы

Как только вы закончили и загрузили на сайт файл page-blog.php , зайдите в консоль администратора и перейдите на страницу добавления новой страницы. Там создайте новую странице под названием "Blog " (или как вам захочется), установите ее шаблон как "Blog " из панели "Атрибуты страницы ".

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

Заключение

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

Статья для новичков и тех, кто уже немного знаком с WordPress, которая должна развенчать все мифы использования разных вариантов циклов в WordPress.

О Цикле WordPress и с чем его едят я уже писал и вскользь упоминал о разных вариантах циклов в описаниях функций . В этой статье я сделаю следующий шаг и расскажу о 3-х вариантах построения циклов для вывода записей и о плюсах и минусах каждого из них.

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

Разработчики WordPress предоставляют следующие варианты построения циклов вывода записей:

  1. Стандартный цикл и цикл на основе query_posts() ;
  2. WP_Query() ;
  3. Дополнительный цикл на основе get_posts() .

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

Для лучшего понимания и визуального восприятия работы функций запроса, изучите эту схему:

1) Стандартный Цикл и цикл на основе query_posts()

Я объединил 2 вида циклов (с query_posts() и начинающийся с if(have_posts()), потому что технически они абсолютно одинаковые.

Давайте вспомним, как выглядит стандартный Цикл WordPress :

id="post-">

">

Записей нет.";

Такой код мы можем встретить в файлах index.php, category.php и т.д. Эти файлы отвечают за вывод на странице списка записей. Этот цикл перебирает по очереди посты, которые выводятся на странице и во время перебора, используя Теги Шаблона (предназначенные для использования внутри Цикла), мы можем вывести различные данные поста (заголовок, текст, метаданные и т.д.).

Обратите внимание: в стандартном Цикле мы не указываем никаких данных для выборки записей, а сразу начинаем цикл с if(have_posts()){ while(have_posts()){… Это говорит о том, что данные уже существуют и их нужно просто обработать и вывести на экран.

«Уже существующие» данные сохраняются в глобальную переменную $wp_query и для каждого типа страниц WordPress определяются автоматически, т.е. WordPress заранее делает запрос к БД, на основе того какой тип страницы сейчас отображается (категория, метка, статья, постоянная страница и т.д.) и результат запроса записывается в $wp_query , а затем от туда выводится в цикле. Интересно, что такой запрос делается функцией query_posts(), которую мы разберем ниже.

Обычный Цикл WordPress используется для базовых страниц WP (категории, метки, архивы по дате).

Цикл на основе query_posts()

query_posts() позволяет изменить базовый запрос и вывести нужный нам вариант записей.

Вариант 1

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

В этом примере мы создали новый запрос к БД, в котором использовали параметры базового запроса + свои параметры: исключили категории 6 и 9 (cat=-6,-9), а также отсортировали записи по порядку (order=ASC) и вывели 20 записей на странице вместо, установленных в настройках 10 (posts_per_page=20). Полный список параметров, которыми можно сформировать нужный нам вывод, смотрите в описании функции query_posts() .

Преимущества такого изменения в том, что если мы, например, изменим количество выводимых записей на странице с 10 (по умолчанию) на 20, то пагинация на странице автоматически подстроится под это изменение, потому что query_post() меняет данные глобальной переменной $wp_query, а пагинация строится именно на основе этих данных. Это лишь один из примеров, показывающий что query_posts() и поведение других функций на странице взаимосвязаны.

Вариант 2

Можно не использовать параметры базового запроса ($query_string), а полностью переписать базовый запрос:

Query_posts("cat=-6,-9&order=ASC");

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

Необходимость wp_reset_query()

Сбрасывать измененный запрос при использовании query_posts() нужно, потому что query_posts() переписывает глобальную переменную $wp_query которая отвечает за некоторые свойства страницы. Давайте посмотрим на примере.

Предположим нам на странице категории 6 (ID категории), нужно вывести данные только поста 9 (ID поста):

В этом примере мы не сбросили запрос и функция query_posts() переписала глобальную переменную $wp_query . Теперь, кода мы проверим какая это страница (а это страница категории: is_category() == true), мы увидим, что это уже совсем не страница категории, а страница поста: is_single() == true . Т.е. следующий код вернет нам «Это страница поста», хотя на самом деле это страница категории:

If(is_category()) echo "Это страница категории"; // не сработает if(is_single()) echo "Это страница поста"; // сработает

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

Когда использовать query_posts()?

Когда нужно немного изменить основной (базовый) запрос WordPress. В идеале: для исключения рубрики/метки (например, на главной странице); изменение направления сортировки; ограничения количества выводимых постов; исключения определенных постов из категории/метки и т.п.

Не нужно использовать query_posts() для создания нескольких циклов на одной странице, для вывода в сайдбар списка постов, для создания дополнительного вывода записей и т.п., для этих целей используйте циклы на основе get_posts(). К тому же, обе функции понимают параметры одинаково! Так зачем "платить" больше?..

2) Цикл на основе WP_Query()

Для вывода записей никак не связанных со страницей или создания множественных (дополнительных) циклов можно использовать циклы на основе класса WP_Query . Выглядят они аналогично циклам с использование query_posts() . Для WP_Query используются те же самые параметры, что и для query_posts().

Интересно, что WP_Query является ядром функций query_posts() и get_posts() , т.е. обе эти функции работают на основе этого класса.

Пример цикла: выведем все записи из категории 9:

have_posts()){ while($query->have_posts()){ $query->the_post(); ?>

">

Пример создания множественных циклов на основе WP_Query() :

have_posts()){ $query1->the_post(); // вывод записей } wp_reset_postdata(); // Цикл 2 $query2 = new WP_Query("cat=-2&nopaging=1"); // все посты, кроме категории 2 while($query2->have_posts()){ $query2->the_post(); // вывод записей } wp_reset_postdata(); // Цикл 3 $query3 = new WP_Query("cat=-3&nopaging=1"); // все посты, кроме категории 3 while($query3->have_posts()){ $query3->the_post(); // вывод записей } wp_reset_postdata(); ?>

Особенность циклов на WP_Query() в том, что мы создаем новый объект $query , который никак не связан с аналогичным глобальным объектом $wp_query и поэтому мы никак не нарушаем структуру текущей страницы.

Также, мы можем использовать новый объект в других целях, не только для вывода записей, но и для различного рода проверок: например, записи какого типа страницы используются в этом новом объекте; можем узнать общее количество записей удовлетворяющих запросу ($query->found_posts) и т.д. Такие данные могут пригодится при создании дополнительных запросов с пагинацией или где-то еще (пример в комментариях).

Зачем нужно использовать wp_reset_postdata() ?

В глобальной переменной $post хранятся данные текущего поста (если показывается страница поста, то данные этого поста). Когда срабатывает часть кода $query->the_post() , то в переменную $post записываются данные текущего поста в цикле и в конце цикла в этой переменной остаются данные последнего поста из этого цикла, а нужно чтобы $post всегда содержала данные текущего поста страницы. Т.е. получается до использования цикла $post->ID (ID текущего поста) было равно, допустим, 10, а после срабатывания цикла, та же самая переменная $post->ID уже равна, допустим, 56 (ID последнего поста из цикле), а нужно чтобы она по-прежнему равнялась 10.

#1. Пример цикла на основе get_posts() . Выведем 5 записей из рубрики 9:

9)); foreach($myposts as $post){ setup_postdata($post); // стандартный вывод записей } wp_reset_postdata(); // сбрасываем переменную $post ?>

Код выведет именно 5 записей, хотя в аргументах мы указали только номер рубрики. Вызвано это тем, что у функции get_posts() есть параметры по умолчанию (см. описание), о которых нужно помнить. Например, если нам нужно вывести все записи из рубрики 9, то мы должны добавить еще параметр "nopaging" => 1 или "posts_per_page" => -1 (разницы нет).

Когда использовать get_posts()

Всегда, когда нужно просто вывести записи из БД в любом месте шаблона. Когда нужно создать несколько циклов. Так как get_posts() принимает те же параметры что и query_posts(), её очень удобно использовать для вывода записей по самым разным критериям.

Выводы

Где и какой из 3-х вариантов циклов использовать:

    query_posts() - если нужно изменить/подправить стандартный вывод записей на страницах WordPress. Можно использовать 1 раз на странице;

    get_posts() - если нужно вывести записи из Базы Данных. Можно использовать сколько угодно раз на странице;

  • WP_Query() - во всех других случаях когда не подошли query_posts() и get_posts(). Класс WP_Query() является ядром query_posts() и get_posts() и может быть использован для каких-либо сложных случаев вывода.

Помните, что параметры для всех вариантов одинаковые и

Я видел много сайтов на WordPress, у которых на главной странице отображается какая-нибудь статичная страница, а страница блога находится отдельно, например yourwebsite.com/blog .

Как же это реализовать на своём собственной сайте? На самом деле существует два способа — один простой и один не очень, рассмотрим их оба.

Способ 1. Использование index.php в качестве шаблона блога.

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

Кстати, так как в разных темах содержимое файла index.php разное — оно может быть совсем не предназначено для блога, в таких случаях либо меняем сами свой index.php либо воспользуемся вторым способом, который я описал чуть ниже.

Шаг 1. Создание страницы блога.

Ну, что тут сказать, переходим в Страницы > Добавить новую, указываем какой-нибудь заголовок, например Блог и какой-нибудь URL, например blog, после этого сохраняем. Всё, с шагом 1 покончено.

Шаг 2. Настраиваем отображение страниц в настройках.

Переходим в Параметры > Чтение, настраиваем отображение нужной страницы на главной, а для страницы записей устанавливаем созданную в предыдущем шаге.

Шаг 3. Последний шаг. Добавляем страницу в меню.

Уже после завершения второго шага при переходе по адресу блога (у нас это yourwebsite.com/blog), у вас будет отображаться страница с записями, использующая шаблон файла index.php .

Тем не менее можно также добавить эту страницу в меню сайта (если поддерживается темой разумеется). Для этого переходим в Внешний вид > Меню , слева в колонке выбираем нашу страницу блога и нажимаем кнопку «Добавить в меню»

Способ 2. Использование собственного шаблона блога. Создание нескольких блогов на одном сайте WordPress.

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

Шагов будет чуть побольше и они будут немного позаковырестей, чем в предыдущем методе. Итак, поехали.

Шаг 1. Создание шаблона страницы

Открываем папку с темой и создаем там файл произвольного названия, например blog-template.php . Внутрь файла вставляем:

Шаг 2. Создаем страницу блога

Этот шаг аналогичен первому шагу из начала поста. Итак, переходим в Страницы > Добавить новую, придумываем название и URL странице, и кроме всего прочего в атрибутах страницы указываем только что созданный нами шаблон.

Сохраняем.

Шаг 3. Плагин постраничной навигации

Однозначно, что нам понадобится постраничная навигация. Скорее всего у вас уже используется какой-то плагин или функция навигации. Если же навигация не будет работать, рекомендую поставить WP_PageNavi — этот плагин работает отлично, я его протестировал, всё ок.

Шаг 4. Шаблон страницы блога

Это голый шаблон блога, без таких важных функций как get_header() , get_footer() и прочего. Просто в данный момент важно понять саму суть.

/* * Template name: Блог */ $current_page = (get_query_var("paged" ) ) ? get_query_var("paged" ) : 1 ; // определяем текущую страницу блога $args = array ( "posts_per_page" => get_option("posts_per_page" ) , // значение по умолчанию берётся из настроек, но вы можете использовать и собственное "paged" => $current_page // текущая страница ) ; query_posts( $args ) ; $wp_query ->is_archive = true ; $wp_query ->is_home = false ; while (have_posts() ) : the_post() ; ?>

/* содержимое поста */ ?>

// функция постраничной навигации

Всё, страница блога создана, вы можете таким образом создать различные страницы блогов с разными параметрами массива $args. Полный список параметров

Здравствуйте уважаемые читатели блога 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 .

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

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

Использование виджета свежих записей

WordPress имеет свой виджет вывода свежих записей, который можно вставить в боковую панель (сайдбар) вашего сайта, или любую другую готовую область для виджетов. Просто перейдите в: Внешний вид » Виджеты и перетащите виджет в область для виджетов вашего сайта.

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

Использование плагина Recent Posts Widget Extended

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

Что делать, если вы хотите отобразить последние записи с миниатюрами и небольшими анонсами записей? Что делать если вы хотите вывести свежие записи из определенной рубрики или метки?

В таком случае вам пригодится плагин Recent Posts Widget Extended.

Recent Posts Widget Extended . После активации просто перейдите в: Внешний вид » Виджеты и перетащите виджет Recent Post Extended в сайдбар.

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

Увеличить шрифт можно убрав галочку с «использовать стили по умолчанию» и задав собственные значения.

Выводим последние записи с помощью шорткода

Вывести последние записи в сайдбар довольно легко, но что если необходимо вывести последние посты внутри какой-либо записи или страницы WordPress? Самый очевидный и простой способ отобразить свежие записи внутри поста или страницы — это с помощью специального шорткода.

Первое, что вам нужно сделать — это установить и активировать плагин Display Posts Shortcode . После активации, плагин сразу заработает, никаких настроек не имеется.

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

Вывод 5 последних записей с миниатюрами и анонсами:

Вывод последних страниц, вместо постов:

Сортировка по названию, вместо даты:

Вывод последних страниц из конкретной родительской страницы:

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

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

Add_filter (‘widget_text’ , ‘do_shortcode’);

Вывод свежих записей вручную

Более продвинутые пользователи могут вывести последние записи вручную, немного добавив код в файлы темы WordPress. Существуют несколько способов сделать это, но самым простым способом является использование встроенного класса WP_Query.

Просто добавьте нижеприведенный код в то место, где вы хотите отобразить свежие записи.


    // Define our WP Query Parameters

    // Start our WP Query
    have_posts()) : $the_query -> the_post(); ?>

    // Display the Post Title with Hyperlink

  • »>
  • // Display the Post Excerpt

  • // Repeat the process and reset once it hits the limit
    endwhile;
    wp_reset_postdata();
    ?>

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

Надеемся, что статья помогла вам узнать как вывести последние записи в WordPress.

2024 psiholog112.ru. Интернет. Безопасность. Полезные советы. Программы. Система.