Цикл WordPress

Цикл WordPress

От автора: в обсуждениях WP и, в частности, в разговорах по разработке тем (или при создании новых шаблонов страниц в теме) вы неизбежно столкнетесь с понятием «цикл WordPress». Цикл (loop) – это фреймворк, внутри которого WP строит контент для страниц, на которые заходит пользователь. Будь-то статичная домашняя страница или страница последних постов в блоге, или что-то другое. Возможно, звучит сложно, но на деле это просто механизм зацикливания.

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

Во всех шаблонах тем для WP есть цикл. Это один из способов, с помощью которого шаблон может искать и вытягивать контент из страниц и постов, хранящихся в базе данных. Разберем несколько примеров:

Базовый пример цикла

<?php 
if ( have_posts() ) {
 while ( have_posts() ) {
 the_post(); 
 // контент поста
 }
}
?>

В примере выше видно, что настройка очень простая. Все начинается с условия наличия постов have_posts. Далее следует цикл while, задающий условие. Пока есть посты (опять с помощью have_posts), проходимся в цикле по следующему посту и вызываем the_post – конкретный пост.

Конкретные запросы

Если нужно что-то большее, чем просто возврат всех постов, то нужно ограничить запросы. Здесь нам поможет WP_Query.

Хотите быстро научиться создавать сайты и блоги на WordPress с уникальным дизайном?

Получите самую полную в Рунете бесплатную систему обучения создания сайтов на WordPress

Узнать подробнее

Фильтрация по категориям

Пример ниже – модифицированная версия кода с Codex, в котором мы запрашиваем посты из категории с id, равным 4. Далее можно посмотреть образец содержимого самого цикла. Мы ищем посты из категории с ID 4, в div .post отображаем заголовок поста (со ссылкой на пост), дату, контент и метаданные поста.

<!-- Запрос постов из категории 4 -->
<?php $query = new WP_Query( array( 'cat' => 4 ) ); ?>

<!-- Начало цикла -->
<?php if ( $query->have_posts() ) {
 while ( $query->have_posts() ) {
 $query->the_post(); ?>
 <div class="post">
 <!-- Заголовок в виде ссылки на пост. -->
 <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>

 <!-- Дата(формат – Ноябрь 16, 2009) и ссылка на другие посты автора. -->
 <small><?php the_time( 'F jS, Y' ); ?> by <?php the_author_posts_link(); ?></small>

 <!-- Контент поста -->
 <div class="entry">
 <?php the_content(); ?>
 </div>

 <!-- Метаданные поста -->
 <p class="postmetadata"><?php _e( 'Posted in' ); ?> <?php the_category( ', ' ); ?></p>
 </div> 
 }
}

С помощью WP_Query можно настраивать результат. Можно включить посты только из одной категории или нескольких, или включить все посты кроме определенной категории или нескольких. Можно искать и возвращать посты по ключевым словам, находить посты по ID, показывать только данные со страниц с помощью post_type и т.д. Более подробно с WP_Query можно ознакомиться в документации WP_Query.

«Совет: получить ID категории можно разными способами. Простой – перейти в «Posts» и далее в «Categories» в WP-Admin, нажать правую кнопку мыши на имени категории из списка и сохранить URL. Далее необходимо вставить ссылку в текстовый редактор. Ссылка будет выглядеть примерно так: http://example.com/wp-admin/term.php?taxonomy=category&tag_ID=4&post_type=post&wp_http_referer=%2Fwp-admin%2Fedit-tags.php%3Ftaxonomy%3Dcategory. Нам нужен tag_ID!»

Фильтрация по значениям пользовательских полей

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

$query = new WP_Query( array('meta_key' => 'department', 'meta_value' => 'marketing') );

Понятие цикла

Самый лучший способ понять цикл – использовать его. Вытягивайте с его помощью контент из шаблонов, которые вы создаете для тем, или используйте его в коде существующих шаблонов тем. Если нужно что-то сделать, отфильтровать по определенным критериям, снова запускайте цикл. Посмотрите документацию The Loop в Codex или ищите идеи в Google. Ограничений нет!

Автор: Jeff Smith

Источник: https://www.sitepoint.com/

Редакция: Команда webformyself.

Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Хотите быстро научиться создавать сайты и блоги на WordPress с уникальным дизайном?

Получите самую полную в Рунете бесплатную систему обучения создания сайтов на WordPress “Уникальный сайт с нуля”

Получить

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree