26 сентября 2019 WordPress
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 '
‘ . get_the_title() . ‘
'; } } else { // Постов не найдено }
Но мне больше нравится что-то вроде такого варианта:
Параметры запроса 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 метки