WordPress цикл на основе WP_query()

Wordpress цикл на WP_Query

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

WordPress цикл на WP_Query()

Если нужно вывести на странице записи, которые совершенно к ней не относятся, то придется создать новый WordPress цикл, и для этого мы сможем использовать класс WP_Query().

Пример: архив произвольного типа записей

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

<?php /* Template Name: Аксессуары для мобильных устройств */ ?>
<?php get_header(); ?>
<div id="container">
 <div id="content" role="main">

 <h1>Аксессуары для мобильных устройств</h1>

 <!-- Начинается цикл -->

 <?php
    $args = array (
    'post_type' => 'acsessuar',
    'posts_per_page' => 10,
    'paged'=>get_query_var('paged')
    );

    $acsessuar = new WP_Query($args); ?>

 <?php while ( $acsessuar->have_posts() ) : $acsessuar->the_post(); ?>

 <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php if ( (function_exists('has_post_thumbnail')) && (has_post_thumbnail()) ) : ?>
 <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" alt=""><?php the_post_thumbnail(array( 234,124)); ?></a>
<?php endif; ?>
<a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
<? the_excerpt(); ?>
</div><!-- post -->
<?php endwhile; ?>

<?php wp_reset_postdata(); ?> 

 <!-- Заканчивается цикл -->

</div><!-- #content -->
 </div><!-- #container -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

В данном примере вы можете увидеть где начинается новый WordPress цикл, и где он заканчивается. Обращаю ваше внимание на массив $args, который содержит в себе параметры цикла, на основе которых получаются нужные нам записи. Затем создается новый цикл с помощью функции $acsessuar = new WP_Query($args), и если есть посты удовлетворяющие нашим параметрам, то они выводятся на странице.

После нового цикла не забудьте указать <?php wp_reset_postdata(); ?> - это крайне необходимо для того, чтобы сбросить ранее вызванные параметры WP_Query. Данный шаблон в последующем можно применить к любой WordPress странице, тем самым вызвать на этой странице нужные нам записи.

Подобные WordPress циклы на основе WP_Query можно использовать несколько раз на странице. Напомню, что WordPress циклы можно строить также с помощью классов  query_posts и get_posts.

Параметры WP_Query для построения WordPress циклов

Для построения циклов WP_Query необходимо знать некоторые параметры, которые позволят вам построить нужный цикл. Основные параметры WP_Query:

'post_type' => '', - тип записей

'posts_per_page' => 10, - количество выводимых записей на странице

'category' => , - вывести посты из данной категории (следует указать ID категории)

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