Вывод постов на странице, постраничная навигация

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

Вывести посты на странице в WordPress — это значит создать шаблон страницы (page template) и забацать туда цикл, query_posts.

Для чего нужно такое вытворять? Рассмотрим несколько вариантов:

  • представьте, что вам нужно вывести на одной странице записи сразу из нескольких категорий
    query_posts('cat=3,4,5');
  • либо архивы для какого-нибудь типа записей
    query_posts('post_type=artwork');
  • а ещё таким образом можно обобщить на одной странице несколько таксономий, несколько меток и прочее

Вообще можно скомбинировать любые условия, используя эту статью. Параметры, которые описаны для WP_Query также подойдут и для query_posts.

Теперь я думаю порядок действий вам понятен? Создаете шаблон страницы, пихаете наверх query_posts, потом цикл, потом постраничную навигацию…

Кстати о ней. Просто так она не будет работать. Как это исправить?

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

  1. Создать шаблон страницы.
  2. Определить номер текущей страницы.
  3. Использовать query_posts с необходимым набором аргументов, при этом не забыв включить в него номер текущей страницы.
  4. Добавить цикл.
  5. Добавить функцию постраничной навигации, например wp_pagenavi().

А теперь полностью готовый код:

<?php 
/*
 * Template name: Моя галерея
 */
$current_page = (get_query_var('paged')) ? get_query_var('paged') : 1;
$params = array(
	'posts_per_page' => 7, // количество постов на странице
	'post_type'       => 'artwork', // тип постов
	'paged'           => $current_page // текущая страница
);
query_posts($params);
 
$wp_query->is_archive = true;
$wp_query->is_home = false;
 
while(have_posts()): the_post();
	/*
	в тело цикла вставьте HTML одного анонса записи, например:
	<h2><?php the_title() ?></h2>
	<p><?php the_content() ?></p>
	*/
endwhile;
 
wp_pagenavi(); // функция постраничной навигации

Это конечно же обобщенный пример, поэтому не забудьте про get_header() и get_footer(), если они у вас используются.

Плагин постраничной навигации WP-PageNavi

В предыдущем примере я использовал функцию wp_pagenavi(). Она отвечает за постраничную навигацию и является составляющей частью плагина WP-PageNavi (русское название: Список страниц).

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

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

Постраничная навигация на сайте.
Миша Рудрастых Разработчик WordPress WooCommerce

Миша Рудрастых

Впервые познакомился с WordPress в 2009 году, и после двух лет мучений с Joomla и самописными движками это был просто бальзам на душу. С 2014 года меня можно встретить на WordCamp — официальной конфе по WP в Москве, иногда там выступаю. Также в настоящее время веду курсы по WordPress в Epic Skills в Питере.

Смотрите также