Вывод записей с помощью WP_Query{}
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 '<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 метки
Добавить комментарий