Статьи

Понимание «петли» в WordPress

петля

Эта статья является частью серии, созданной в сотрудничестве с SiteGround . Спасибо за поддержку партнеров, которые делают возможным использование SitePoint.

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

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

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

Основной пример цикла

<?php if ( have_posts() ) { while ( have_posts() ) { the_post(); // Post Content here } } ?> 

Вы можете видеть в приведенном выше примере, что это действительно довольно простая установка. Все начинается с условного, с проверки have_posts чтобы убедиться, что на самом деле есть какие-либо сообщения для поиска. Затем происходит цикл — в то время как все еще есть посты (опять же с использованием have_posts ), он перебирает следующий пост и вызывает the_post — который ссылается на тот, через который в данный момент the_post .

Особые Запросы

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

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

В приведенном ниже примере, модифицированном по сравнению с примером в Кодексе, мы будем запрашивать сообщения, которые находятся в категории с идентификатором 4. Затем вы можете увидеть пример содержимого самого цикла. Здесь мы проверяем сообщения с идентификатором категории 4, а затем в .post div показываем заголовок сообщения (связанный с сообщением), дату сообщения, содержимое сообщения и метаданные сообщения.

 <!-- Query for posts which are in category 4 --> <?php $query = new WP_Query( array( 'cat' => 4 ) ); ?> <!-- Begin The Loop --> <?php if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); ?> <div class="post"> <!-- Display the Title as a link to the Post's permalink. --> <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2> <!-- Display the date (November 16th, 2009 format) and a link to other posts by this posts author. --> <small><?php the_time( 'F jS, Y' ); ?> by <?php the_author_posts_link(); ?></small> <!-- Display the post content --> <div class="entry"> <?php the_content(); ?> </div> <!-- Display the post metadata --> <p class="postmetadata"><?php _e( 'Posted in' ); ?> <?php the_category( ', ' ); ?></p> </div> } } 

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

Совет: Вы можете получить идентификационный номер категории несколькими способами. Один из простых способов — перейти к «Постам», а затем «Категории» в вашем 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 !

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

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

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

Понимание «петли»

Действительно лучший способ понять The Loop — это просто использовать его. Используйте его для извлечения контента из шаблонов, которые вы создаете для тем, или из кода, который вы настраиваете в существующих шаблонах в существующих темах. Если вы хотите что-то сделать, отфильтруйте по определенным критериям, снова запустите The Loop — посмотрите документацию The Loop в Кодексе или поищите идеи в Google. Небо это предел!


Если вы ищете место для размещения своего сайта WordPress после того, как вы создали свои шаблоны и все The Loop выяснили, взгляните на нашего партнера SiteGround . У них есть доступный хостинг WordPress, установка в один клик, промежуточные среды и многое другое!