вы можете воспользоваться услугами веб-студии 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-код для его обертывания:

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






Отображение цикла для определенного запроса
Что делать, если я хочу сделать выбор отображаемых сообщений более конкретным? Например, показывать только записи определенного типа, категории и диапазона дат публикации.
Затем пришло время использовать класс 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, вы сможете создавать расширенные запросы с циклами и условиями, вообще не занимаясь кодом, но при этом имея контроль над каждой мелочью.
Часто задаваемые вопросы
На это есть много причин. Во-первых, это центральный «строительный блок» любого веб-сайта. Я думаю, вы не хотите отображать свои сообщения, написав отдельный блок кода со ссылкой на каждый конкретный пост вручную, верно?
Таким образом, цикл решает эту проблему и позволяет получить столько сообщений, сколько вам нужно, всего несколькими строками кода. Кроме того, есть набор требований, а также стиль внутри цикла, который работает для каждого отображаемого сообщения. Так что это делает процесс очень эффективным и простым.
Это то, что называется начальным циклом. Если вы пойдете в Настройки > Чтение, вы сможете изменить количество сообщений для этого цикла. И лучше использовать хук pre_get_posts, если вы хотите изменить этот цикл.
Нижняя граница
Понимание идеи цикла работы WordPress необходимо, даже если вы не планируете становиться разработчиком темы, а только создаете простой сайт для малого бизнеса. Я дал лишь краткое описание многих ссылок WordPress Codex, потому что именно здесь вы можете найти всю техническую информацию.
Кроме того, важно знать полезные инструменты и плагины, которые будут использоваться при создании сайта, запросов и построителей циклов в нашем случае. Я уже писал о сравнении Elementor Loop и JetEngine ранее (если вы используете этот конструктор) и упоминал там блок Gutenberg Query Loop.
Если вашему проекту не требуется много динамического контента, может быть достаточно функций WordPress по умолчанию для выборки постов. Но если ваша цель состоит в том, чтобы иметь более персонализированный и целевой контент для ваших пользователей, если вы создаете торговую площадку, каталог или веб-сайт членства, вам понадобятся такие плагины, как JetEngine, со всеми модулями и мощными инструментами, которые он предлагает.