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

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

Оглавление:

Что такое цикл WordPress?

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

Структура основного цикла

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

<?php
if ( have_posts() ) :
   while ( have_posts() ) : the_post();
      // Display post content
   endwhile;
endif;
else: echo ("Your message goes here"); 
endif; 
?>

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

<?php 
if ( have_posts() ) {
	while ( have_posts() ) {
		the_post(); 
			the_title();
			the_excerpt();
	} // endwhile
else :
    // When no posts are found, output this text.
    _e( 'Sorry, no posts matched your criteria.' );
} endif;
wp_reset_postdata();
?>

Давайте пройдемся по каждой строке, чтобы понять, что происходит.

Это проверяет условия, и если они совпадают, остальная часть кода будет запущена.

Проверяет, есть ли посты, соответствующие параметрам (которые можно поставить в скобки), и если да, то цикл будет повторяться до тех пор, пока постов не останется.

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

  • the_title() и the_excerpt

Теги шаблона для отображения заголовка поста и отрывка.

Он закрывает пока петля.

Открывает блок кода с альтернативным сценарием.

Функция печати текста для перевода.

Закрывает если заявление.

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

Чтобы правильно отобразить содержимое, вам также понадобится HTML-код для его обертывания:

HTML в теме PHP WordPress

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

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

WP_Query и цикл WordPress

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

Наметим здесь последовательность событий.

  1. Сначала данные извлекаются с помощью объект WP_Query класс на основе URL. Когда вы вводите URL в адресной строке браузера, он отправляет запрос на сервер, где основная функция WordPress, в свою очередь, отправляет запрос в базу данных и возвращает некоторые данные в браузер.
    Например, в предыдущем примере кода базового цикла функция have_posts() на самом деле вызывает $wp_query->have_posts() – проверяет, есть ли какие-либо посты, доступные для повторения.
    Это похоже на то, когда вы приходите в магазин Lego со всеми различными наборами Lego, доступными вам по умолчанию.
  2. Тогда пришло время для нашего цикл while/endwhile, который выполняет итерацию по запросу и данным, уже полученным на предыдущем шаге (с помощью WP_Query), пока еще есть с чем работать. Внутри этого цикла находится код, применимый к каждому конкретному посту, с которым он работает.
    Если задать более конкретные параметры запроса (отображать не все посты на сайте, а только определенные типы постов, таксономии и т. д. — об этом позже), то будет список аргументов, определяющих, что особый запрос.
    Как будто вы выбрали особый Установите Лего в этом магазине и продолжайте играть с ним.
  3. $пост — это глобальная переменная, в которой хранится вся информация о текущем обрабатываемом посте.
    Таким образом, только тот контент, который принадлежит определенный пост будет использован.
  4. Теги шаблона, такие как the_title(), the_content(), the_excerpt() и т. д., являются необязательными и отображают определенную часть сообщения. Используя их, вы можете отображать посты именно так, как хотите.
Структура цикла WordPress

Отображение цикла для определенного запроса

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

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

Это пример кода, который будет зацикливать только сообщения типа «фильм» в порядке ASC, отфильтрованном по заголовку и с нумерацией 20 сообщений на странице:

$query_args = array(
	'post_type' => 'film',
	'post_status' => 'publish',
	'order' => 'ASC',
	'orderby' => 'title',
	'posts_per_page' => '20',
);

// The Query
$the_query = new WP_Query( $query_args );

// The Loop
if ( $the_query->have_posts() ) {
	while ( $the_query->have_posts() ) {
		$the_query->the_post();
	}
	/* Restore original Post Data */
	wp_reset_postdata();
} else {
	// no posts found
}

Разберем этот код:

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

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

Затем, если ($the_query->have_posts() проверяет, соответствуют ли какие-либо сообщения тем аргументам, которые можно найти в запросе.

Если да, цикл будет выполнен.

И, наконец, важно использовать wp_reset_postdata(), поэтому текущие аргументы запроса не будут влиять на другие функции.

Создавать пользовательские запросы проще, чем кажется, используя бесплатный Crocoblock Генератор запросов, и у нас уже есть пошаговое руководство по его использованию. Замечательно, что он может выводить код как в PHP, так и в JSON, и вы можете найти примеры использования в этом руководстве.

Отображение сообщений в темах блоков

Блочные темы имеют другую структуру, чем классические. Если вы редактируете шаблоны блоков, самый простой способ отображения сообщений — это блок Loop Query (или если вы просто используете редактор Gutenberg в классической теме). Если вы выключите переключатель «Наследовать запрос из шаблона», будут доступны дополнительные параметры для фильтрации вашего цикла. Вы можете выбрать тип сообщения, категорию, автора и ключевые слова. Также внутри шаблона цикла вы можете добавлять или удалять некоторые блоки.

Цикл запросов Гутенберг

Для некоторых проектов или архивных страниц функционала этого блока достаточно, но если вы хотите больше контроля и гибкости, то он вам не подойдет. Допустим, нам нужно отобразить сообщения с определенным статусом, получить дополнительные мета-поля, не включать определенные сообщения и т. д. В этом случае используйте Реактивный двигатель плагин, который хорошо работает с Gutenberg и даже может расширить функциональность блока Query Loop.

Но лучший способ получать сообщения с помощью функциональности JetEngine — это создавать динамические списки и эффективно использовать Конструктор запросов, Отношение Строительи многое другое.

Если вы предпочитаете конструкторы с перетаскиванием, вы, вероятно, уже знаете, что все JetPlugins работать с Элементор. JetEngine и JetSmartFilters совместимы с Строитель кирпичей.

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

Часто задаваемые вопросы

Почему цикл так важен в WordPress?

На это есть много причин. Во-первых, это центральный «строительный блок» любого веб-сайта. Я думаю, вы не хотите отображать свои сообщения, написав отдельный блок кода со ссылкой на каждый конкретный пост вручную, верно?
Таким образом, цикл решает эту проблему и позволяет получить столько сообщений, сколько вам нужно, всего несколькими строками кода. Кроме того, есть набор требований, а также стиль внутри цикла, который работает для каждого отображаемого сообщения. Так что это делает процесс очень эффективным и простым.

Что такое «Основной цикл»?

Это то, что называется начальным циклом. Если вы пойдете в Настройки > Чтение, вы сможете изменить количество сообщений для этого цикла. И лучше использовать хук pre_get_posts, если вы хотите изменить этот цикл.

Нижняя граница

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

Кроме того, важно знать полезные инструменты и плагины, которые будут использоваться при создании сайта, запросов и построителей циклов в нашем случае. Я уже писал о сравнении Elementor Loop и JetEngine ранее (если вы используете этот конструктор) и упоминал там блок Gutenberg Query Loop.

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