Главная Новости

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


Опубликовано: 01.09.2018

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

Урок 4 Цикл Wordpress

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

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



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

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


Создание темы Wordpress - Урок 19 Цикл Wordpress. Натяжка верстки на блог

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

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


Modificando o Loop WordPress com query_posts e WP_Query

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

Стандартный цикл WordPress; Цикл WordPress на основе query_posts(); Цикл WordPress на основе Wp_Query(); Цикл 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

Еще статьи

Статьи связанные по теме:

rss