Основной цикл

Урок 6

Зарегистрируйтесь или войдите и получите бесплатный доступ к первым 3-м урокам курса.

Урок 6

Цикл WordPress

Цикл WordPress — это стандартный механизм WP, использующийся для вывода постов в теме WordPress. Цикл получает массив объектов постов, перебирает их и выводит информацию о них, даже если это страница отдельного поста.

Ниже вы найдёте подробное теоретическое руководство по циклам WordPress с примерами. Если же вам нужно больше практики, то рекомендую смотреть видеоурок.

Что в видеоуроке?

Чтобы скачать тему WordPress, которая получилась у нас в процессе этого урока, необходимо приобрести курс.

В видеоуроке – при помощи цикла WordPress динамически выводим контент на странице записи:

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

После этого – программируем страницы блога, рубрик и меток, выводим динамически посты на них:

шаблон страницы архива рубрики WordPress
Выведем посты при помощи цикла WordPress, а также их заголовки, рубрики, даты публикации. Разберёмся, что такое «Отрывок» записи и поговорим о способах отображения короткого описания записи. И конечно же выведем заголовки и описания самих рубрик и меток тоже.

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

Основной и дополнительные циклы

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

Давайте рассмотрим отличия основного цикла от дополнительных:

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

Запись цикла в коде

Простейшую запись цикла можно представить вот так:

if ( have_posts() ) : // если есть посты
	while ( have_posts() ) : the_post(); // то инициализируем каждый пост по порядку
		// выполняем код для каждого конкретного поста
		the_title( '<h2>', '</h2>' ); // например выводим заголовок
	endwhile;
else:
	echo 'В этой категории нет записей, вероятно.';
endif;

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

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

  1. Создайте/оставьте в своей теме WordPress только шаблон index.php.
  2. Вставьте туда код, который вы видите чуть выше.
  3. Переходите на разные страницы и категории сайта через админку и обратите внимание, какие заголовки будут выводиться, например если перейдёте на запись – то выведется только заголовок этой конкретной записи, если на рубрику, то заголовки всех (не забываем про настройки чтения) записей из этой рубрики. Основной цикл сам знает, какие посты выводить. Но его можно и изменить кстати!

Как изменить количество записей в основном цикле WordPress?

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

Способ 1. В настройках чтения

Если мы говорим о страницах архивов (рубрики, метки, поиск, архивы автора и т.д), то количество отображаемых за раз постов зависит от того, сколько их указано в Настройки > Чтение.

Настройки чтения в WordPress

Способ 2. При помощи pre_get_posts

Кроме того, мы можем модифицировать это значение при помощи хука pre_get_posts (подробнее про него тут).

add_action( 'pre_get_posts', 'true_modify_posts_per_page', 25 );
 
function true_modify_posts_per_page( $query ) {
 
	$query->set( 'posts_per_page', 5 ); // отображает 5 записей на странице
	// но мы можем изменять и многие другие параметры основного цикла
 
}

Не знаете, куда вставлять код?

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

Как стилизовать один пост по-другому

Иногда бывает нужно, чтобы в цикле постов – один или несколько из них выводились в другом стиле. Это также заметно и на примере темы, которую мы используем – в ней первая запись в блоге больше, чем остальные. Это можно сделать при помощи обычной паременной-счётчика и функции get_template_part().

$i = 0;
 
while( have_posts() ) : the_post();
	$i++;
	if( 1 === $i ) {
		// если первая запись, то подключаем файл entry-featured.php
		get_template_part( 'entry', 'featured' );
	} else {
		// иначе подключаем обычный entry.php
		get_template_part( 'entry' );
	}
 
endwhile;

Функции для использования внутри цикла

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

  • the_category() – выводит список ссылок на рубрики, в которых находится текущий пост,
  • the_tags() – то же самое для тегов,
  • the_time() – выводит дату и/или время публикации текущего поста
  • the_content() – для вывода основного контента,
  • the_excerpt() – позволяет вывести «Отрывок»,
  • the_post_thumbnail() – выводит изображение записи,
  • the_permalink() – выводит ссылку на страницу записи,
  • the_ID() – ID записи.

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

Кроме того, ещё есть функции механизма цикла, вот они:

  • have_posts() – проверяет наличие постов для вывода на странице (и не только).
  • the_post() – сдвигает значение текущего поста в цикле.
  • get_template_part() – очень удобная функция, которая поможет вам отделить HTML поста внутри цикла в отдельный .php файл и потом подключить его.

Функции пагинации:

Купить курс
  • 18 видеоуроков
  • Можно скачать готовый код после каждого урока
  • Уроки актуальны под последние версии WordPress
  • Можно начать проходить курс сразу же после оплаты
  • Достаточно базовых знаний HTML и CSS, чтобы пройти курс
  • Доступ навсегда
  • Единоразовый платёж
5000 р3500 р
Скидка 30% до 28 октября