Рубрика: Функции WordPress

Цикл WordPress: что такое the loop WordPress

В понимании кода WordPress большое значение имеет понятие цикла WordPress.  Цикл WordPress также называют «loop», «the loop», «the loop WordPress».

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

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

Любой код, имеется в виду HTML и PHP, размещенный внутри цикла будет повторяться для каждой записи. Например, специальный тег comments_link() который выводит ссылку на показ формы комментария , применяется внутри цикла WordPress и будет повторяться для каждой записи.

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

<?php 
get_header(); 
if (have_posts()) : 
  while (have_posts()) : 
    the_post(); 
      the_content(); 
    endwhile;  
endif; get_sidebar();  
get_footer(); 
>

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

В WordPress возможны четыре построения циклов для вывода записей:

  1. Стандартный цикл WordPress;
  2. Цикл WordPress на основе query_posts();
  3. Цикл WordPress на основе Wp_Query();
  4. Цикл WordPress на основе get_posts().

Стандартный цикл WordPress

Стандартный цикл WordPress это цикл с предусловием (оператор PHP while). В стандартном цикле мы не указываем данные для выборки записей. При входе в цикл вычисляется условие и, если его значение отлично от нуля, выполняется тело цикла. Поэтому, стандартный цикл сразу начинаем с if (have_posts()), и если запись присутствует, то тело цикла выполняется до его окончания, а данные после обработки выводятся на экран.

Пример стандартного цикла

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

   <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

    <h2 class="page-title"><?php the_title(); ?></h2>
    <?php edit_post_link(__( 'Edit', 'zeeTasty_lang' )); ?>

    <div class="entry clearfix">
     <?php the_post_thumbnail('medium', array('class' => 'alignleft')); ?>
     <?php the_content(); ?>  
    </div>
    <?php wp_link_pages(); ?>

   </div>

  <?php endwhile; ?>

  <?php endif; ?>

Более точно, это работает так:

После того как WordPress загрузил заголовок блога и передал его в шаблон, переходим к Циклу записей. Функция have_posts() вызывает переменную $wp_query->have_posts(), которая проверяет счетчик цикла на наличие любых записей во всем массиве записей. Также функция the_post() вызывает переменную $wp_query->the_post(), которая увеличивает счетчик цикла и устанавливает глобальную переменную $post, аналогично всем данным записей. Выполнив цикл один раз, функция have_posts() вернет false(нет) и цикл закончится.

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

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

Другими словами, цикл WordPress на основе query_posts() это стандартный цикл WordPress с измененными (дополненными) параметрами запроса. Например, функцией query_posts() можно вырезать отдельные категории или изменить порядок сортировки или убрать отдельные статьи или изменить количество записей.

Важно: при вызове query_posts создается новый объект wp_query, который затем будет использоваться в цикле, поэтому функция query_posts должна располагаться перед стандартным циклом WordPress. При таком расположении WordPress перестает учитывать параметры записи, полученные из URL, и цикл выполняется с параметрами запроса query_posts().

Пример цикла на основе query_posts()

<?php  
query_posts($args);
//$args - параметры запроса   

// [Стандартный Цикл WordPress]  
wp_reset_query(); // сброс запроса  
?>

Еще пример

<?php
// Запрос -The Query
query_posts( $args );

// The Loop-стандартный цикл
while ( have_posts() ) : the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;

// Reset Query- сброс (остановка) guery
wp_reset_query();
?>

Здесь стоит поговорить, про параметры функции query_posts(). Находится query_posts() в файле wp-includes/query.php.

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

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

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

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

Пример цикла WP_query()

<?php
// The Query
$query = new WP_Query( $args );

// The Loop
if ( $query->have_posts() ) {
 while ( $query->have_posts() ) {
  $query->the_post();
  echo '<li>' . get_the_title() . '</li>';
 }
} else {
 // Сообщения не найдены
}
/* Восстановления исходных данных сообщение */wp_reset_postdata();

Пример множественных циклов WP_guery

<?php

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

// The Loop
while ( $the_query->have_posts() ) {
 $the_query->the_post();
 echo '<li>' . get_the_title() . '</li>';
}

/* Восстановления исходных данных сообщения
  * Примечание: Так как мы далее создаем новые WP_Query мы не топтать
  * Оригинальная wp_query $, и это не дмолжны быть сброшены.
*/wp_reset_postdata();

/* Второй Query (without global var) */$query2 = new WP_Query( $args2 );

// Второй Loop
while( $query2->have_posts() ) {
 $query2->next_post();
 echo '<li>' . get_the_title( $query2->post->ID ) . '</li>';
}

// Восстановления исходных данных сообщение
wp_reset_postdata();
//wp_reset_postdata() используется как раз для того, 
//чтобы вернуть правильные данные в переменную $post.
?>

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

Функция get_posts() используется для создания еще одного цикла, помимо основного. get_posts() получает записи (посты, страницы, вложения) из Базы Данных по указанным критериям.

Цикл WordPress на основе get_posts() считается самым удобным вариантом вывода нужных записей в нужном порядке. get_posts() в большинстве случаев полностью заменяет функцию WP_query(). Например,

  • если нужно вывести 7 последних постов в сайдбаре или
  • несколько случайных записей в футере — нет проблем;
  • нужно вывести все картинки, прикрепленные к посту или
  • вывести записи с определенным произвольным полем — get_posts() справится и с этим.

Функция get_posts() аналогично с query_posts() работает на основе класса WP_query() и поэтому передаваемые параметры одинаковые.

Примечание: Класс WordPress (тоже, что и класс php), это самодостаточный код выполняющий определенную функцию. Класс имеет свое имя, содержит собственные константы, переменные (называемые свойствами) и функции (называемые методами).

Пример цикла get_posts()

Выведем 5 записей из рубрики 13

<?php
global $post; // не обязательно
$args = array('category' => 13); // 5 записей из рубрики 13
$posts = get_posts($args);
foreach( $posts as $post ){ setup_postdata($post);
 // стандартный вывод записей
}
wp_reset_postdata(); // сбрасываем переменную $post
?>

На этом про Цикл WordPress все!

©www.wordpress-abc.ru

Еще статьи

Недавние Посты

10 способов увеличить конверсию

Практическое руководство из 10 пунктов, как увеличить конверсию вашего сайта. Читать дальше

1 неделя ago

8 способов проверки работы клавиатуры

Варианты проверки работы клавиатуры компьютера. Читать дальше

4 недели ago

Системы управления ERP в РФ

Что такое системы управления ERP и для чего они нужны. Читать дальше

2 месяца ago

ИТ отдел коммерческой компании. Структура и развитие

Чем занимается ИТ отдел коммерческой компании, его структура, аудит и развитие. Читать дальше

3 месяца ago

Все про поведенческие факторы ПФ

Всё что нужно знать про поведенческие факторы ПФ для продвижения сайта. Читать дальше

5 месяцев ago

Продвижение телеграм канала

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

6 месяцев ago