Skip to main content

Вывод записей с помощью WP_Query{}

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

Возможно вы уже встречали функцию для вывода постов query_posts(), но использовать её не рекомендуется. Правильным решением будет применение именно PHP класса WP_Query{}.

У класса множество параметров и хуков, которые позволяют отфильтровать и вывести только нужные нам данные. Рассмотрим как применять самые основные.

Простой запрос с WP_Query{}

Массив с аргументами удобнее задавать в переменной, а затем передавать его при создании объекта класса. Создадим массив с параметром cat и posts_per_page, чтобы выбрать записи из рубрики с определённым ID и вывести их на странице по 5.

// задаем параметры выборки в массиве
$args = array(
	'posts_per_page' => 5, // выводить по 5
	'cat' => 4, // ID рубрики
);

И создаем новый объект с этими параметрами.

$query = new WP_Query( $args );

Осталось только вывести полученные посты. Полный код примера:

// задаем параметры выборки в массиве
$args = array(
	'posts_per_page' => 5, // выводить по 5
	'cat' => 4, // ID рубрики
);
$query = new WP_Query( $args );

// Цикл
if ( $query->have_posts() ) {
	while ( $query->have_posts() ) {
		$query->the_post();
		echo '<h1>' . get_the_title() . '</h1>';
	}
} else {
	// Постов не найдено
}

Но мне больше нравится что-то вроде такого варианта:

<?php 
// задаем параметры выборки в массиве
$args = array(
	'posts_per_page' => 5, // выводить по 5
	'cat' => 4, // ID рубрики
);
// запрос
$query = new WP_Query( $args ); ?>

<?php if ( $query->have_posts() ) : ?>

	<!-- цикл -->
	<?php while ( $query->have_posts() ) : $query->the_post(); ?>
		<h1><?php the_title(); ?></h1>
	<?php endwhile; ?>
	<!-- конец цикла -->

	<?php wp_reset_postdata(); //очищаем результат запроса?>

<?php else : ?>
	<p><?php esc_html_e( 'Ничего не найдено.' ); ?></p>
<?php endif; ?>

Параметры запроса WP_Query{}

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

cat — ID категории
posts_per_page — ограничение на кол-во выводимых постов
post_type — тип постов, может быть кастомный, например portfolio
orderby — сортировать по (date, title, id, meta_value и др.)
order — порядок сортировки (ASC, DESC)
meta_key — имя произвольного поля
meta_value — значение произвольного поля
author — ID автора
tag_id— ID метки

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

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

*

code