Класс WP_Query в WordPress

Класс "WP_Query" - это класс, который позволяет получить публикации из базы данных с самыми разными критериями. К примеру, можно получить публикации за определённое время, из определённых категории или с указанием значений произвольных полей. Рассмотрим запрос, сделанный с помощью этого класса:
<?php
$query = new WP_Query( [ 'category_name' => 'food' ] );
while($query->have_posts()){
   $query->the_post();
   
   echo '<h2>' . get_the_title() . '</h2>';
   echo get_the_content();
}
wp_reset_postdata();
С помощью такого кода в переменную "$query" будет записаны публикации из базы данных, которые находятся в рубрике "food" (еда). Далее по коду мы использовали функции цикла WordPress, с помощью которых выводим заголовок и содержание каждой полученной публикации.
Обратите внимание на функцию "wp_reset_postdata". Она приводит глобальную переменную $post в правильное состояние. Используйте эту функцию всегда, когда создаёте произвольный запрос через WP_Query
В WrodPress существует глобальная переменная $wp_query, в которой хранится информация о текущем запросе. Эта глобальная переменная всегда создаётся при вызове класса WP_Query и используется в функциях главного цикла WordPress. А ещё именно по содержанию этой переменной WordPress узнаёт, какой тип страницы сейчас отображается (публикация/ архив/ метка и т.п.).
Как можно заметить, первым аргументом в класс WP_Query передаётся массив. Этот массив содержит параметры фильтра. Давайте попробуем вынести его в отдельную переменную и добавить условий:
<?php
$filter = array(
   'category_name' => 'food', // фильтр по категории
   'posts_per_page' => 5, // ограничение количества результатов на странице
   'orderby' => 'comment_count' // сортировка по убыванию количества комментариев
);
$query = new WP_Query( $filter );
...
Перечислим возможные ключи фильтрации выборки и описания к ним:
Ключ Тип Описание
attachment_id число ID вложения. Используется если в "post_type" указано значение "attachment" .
author число/строка ID автора публикаций или разделённые запятыми ID авторов.
author_name строка Имя автора.
author__in массив Массив из ID авторов (логика "ИЛИ").
author__not_in массив Массив из ID авторов, от которых не выводить публикации (логика "НЕ").
cache_results true/false Кешировать ли полученную информацию публикации. По умолчанию: true
cat число/строка ID категории или строка из ID, разделённых запятыми (логика "ИЛИ")
category__and массив Массив из ID категорий, в которых должна быть публикация (логика "И")
category__in массив Массив из ID категорий, в которых может быть публикация (логика "ИЛИ")
category__not_in массив Массив из ID категорий, в которых не должно быть публикации (логика "НЕ")
category_name строка Ярлык категории (не тег)
comment_count массив/число Фильтрует результат по количеству комментариев. Если указано число, то покажет записи именно с таким количеством комментариев. Можно указать массив с ключами 'value' и 'compare', чтобы получилось так:

array('value' => 5, 'compare' => '<') // меньше 5 комментариев

В значении 'compare' можно использовать операторы сравнения: '=', '!=', '>', '>=', '<', '<=' .
comment_status строка Статус комментариев, нужно которые получить.
comments_per_page число Количество комментариев, которое нужно отобразить. По умолчанию: 'comments_per_page'
date_query массив Ассоциативный массив аргументов WP_Date_Query
day число Число (день месяца) в диапазоне от 1 до 31. По умолчанию: ''
exact true/false Делать ли поиск по точному совпадению со словом. По умолчанию: false
fields строка Возвращаемые данные. Принимает значения:
'' - возвращает объект "WP_Post".
'ids' - возвращает массив из ID публикаций.
'id=>parent' - возвращает массив из ID родительских записей
По умолчанию: ''
hour число Час (значение от 0 до 23). По умолчанию: ''
ignore_sticky_posts true/false Не включать в выборку прикреплённые публикации. Если указано "false", то исключает прикреплённые публикации из "post__in". По умолчанию: false
m число Комбинация из года и месяца (4 цифры года и 2 цифры месяца). К примеру, "202010". По умолчанию: ''
meta_compare строка Оператор для сравнения со значением 'meta_value'.
meta_compare_key строка Оператор для сравнения со значением 'meta_key'.
meta_key строка Ключ (название) произвольного поля.
meta_query массив Ассоциативный массив из аргументов WP_Meta_Query.
meta_value строка Значение произвольного поля.
meta_value_num число Цифровое значение произвольного поля.
meta_type_key строка Тип значения поля 'meta_key'. Смотрите подробнее "WP_Meta_Query"
menu_order число Порядковый номер в списке меню.
monthnum число Месяца публикации (от 1 до 12). По умолчанию: ''
name строка Ярлык публикации.
nopaging true/false Отключить постраничную навигацию, выводить все публикации без разбиения на страницы. По умолчанию: false
no_found_rows true/false Не считать количество полученных записей. Включение улучшает производительность. По умолчанию: false
offset число Количество публикаций, которые надо пропустить с начала выборки.
order строка Направление сортировки выборки. Возвращает 'ASC' или 'DESC'. По умолчанию: 'DESC'
orderby строка/массив Сортируем полученные публикации по параметру. Можно передать несколько опций массивом. Если нужно использовать сортировку по "meta_value" или "meta_value_num", то "meta_key=keyname" должно быть задано.

Принимает слудющие значения: 'none', 'name', 'author', 'date', 'title', 'modified', 'menu_order', 'parent', 'ID', 'rand', 'relevance', 'comment_count', 'meta_value', 'meta_value_num', 'post__in', 'post_name__in', 'post_parent__in'

По умолчанию сортировка идёт по дате ('date')
p число ID публикации.
page число Номер для статической домашней страницы. Показывает записи, которые в обычном режиме должны были быть показаны на странице пагинации Х главной статической странице.
paged число Порядковый номер страницы.
page_id число ID страницы.
pagename строка Ярлык страницы.
perm строка Права доступа для публикаций.
ping_status строка Статус пинга.
post__in массив Массив ID публикаций, которые необходимо включить в выборку. Прикреплённые публикации тоже будут включены.
post__not_in массив Массив ID публикаций, которые не надо получать (логика "НЕ И").
post_mime_type строка MIME тип публикаций. Используется, если в "post_type" указано щначение "attachment".
post_name__in массив Массив ярылоков публикаций (логика "ИЛИ").
post_parent число ID родительских публикаций. В значении "0" возвращает все публикации корневого уровня.
post_parent__in массив Массив родительских публикаций, из которых брать записи (логика "ИЛИ").
post_parent__not_in массив Массив родительских публикаций, из которых нельзя брать записи (логика "НЕ").
post_type строка/массив Ярлык типа публикации или массив из них. По умолчанию: 'any'
post_status строка/массив Статус публикации (или массив из статусов).
posts_per_page число Количество публикаций на странице. В значении "-1" возвращает все публикации.
posts_per_archive_page число Количество публикаций на странице архива. Перезаписывает ключ "posts_per_page", если "is_archive" или "is_search" находятся в положении "true".
s строка Фраза для поиска. Если поставить перед словом дефис, будут исключены сообщения, включающие это слово. К примеру, "сыр - мышь" вернёт публикации, которые содержат слово "сыр", но не содержат слово "мышь". Знак исключения (тире) может быть изменён на другой, используя фильтр 'wp_query_search_exclusion_prefix'.
second число Секунды публикации (цифра от 0 до 60). По умолчанию: ''
sentence true/false Поиск по фразе. По умолчанию: false
suppress_filters true/false Не учитывать фильтры. По умолчанию: false (учитывать)
tag строка Ярлыки тегов, разделённые запятыми.
tag__and массив Массив ID тегов (логика: "И")
tag__in массив Массив ID тегов (логика: "ИЛИ")
tag__not_in массив Массив ID тегов (логика: "НЕ")
tag_id число ID тегов или список ID тегов через запятую.
tag_slug__and массив Массив тегов или ярлыков тегов (логика: И)
tag_slug__in массив Массив тегов или ярлыков тегов (логика: ИЛИ). Работает если 'ignore_sticky_posts' включен в "true". Указываются именно теги. Указание ID тегов работать не будет.
tax_query массив Ассоциативный массив из аргументов функции WP_Tax_Query.
title строка Заголовок публикации.
update_post_meta_cache true/false Обновлять или нет кеш публикации. По умолчанию: true
update_post_term_cache true/false Обновлять или нет кеш мета информации. По умолчанию: true
lazy_load_term_meta true/false Загружать ли мета информацию из кеша. Положение "false" отключает кеш запроса для мета информации. Поэтому каждый вызов функции "get_term_meta" начинает делать запрос к базе данных. По умолчанию: значение из переменной $update_post_term_cache
w число Номер недели (цифра от 0 до 53). По умолчанию: ''
year число Год публикации (4 символа). По умолчанию: ''
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: