WP_Query основа WordPress
WP_Query
— это один из самых мощных и гибких классов в WordPress, предназначенный для запросов к базе данных. Он позволяет получать записи, страницы, пользовательские типы записей, таксономии и другие данные с учетом различных параметров. Это основной инструмент для работы с контентом в WordPress.
Основное назначение WP_Query
WP_Query
используется для:
- Получения записей (постов) по различным критериям.
- Фильтрации записей по категориям, тегам, метаполям, датам и другим параметрам.
- Создания пользовательских циклов (loops) для вывода контента.
Структура WP_Query
Основные этапы работы с WP_Query
:
- Создание экземпляра класса с параметрами запроса.
- Использование цикла для вывода результатов.
- Сброс данных запроса после завершения.
Пример базового использования:
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
// Вывод контента
the_title(); // Вывод заголовка
the_content(); // Вывод содержимого
}
} else {
echo 'Записей не найдено.';
}
wp_reset_postdata(); // Сброс данных запроса
Основные параметры WP_Query
WP_Query
принимает массив параметров ($args
), которые определяют, какие данные будут получены. Вот основные параметры:
1. Параметры для выборки записей
post_type
— тип записей (по умолчаниюpost
). Может бытьpage
,attachment
,revision
, или любой пользовательский тип записи.
$args = array(
'post_type' => 'post', // Получить только записи
);
posts_per_page
— количество записей на странице (по умолчанию 10).
$args = array(
'posts_per_page' => 5, // Получить 5 записей
);
post_status
— статус записей (например,publish
,draft
,pending
).
$args = array(
'post_status' => 'publish', // Только опубликованные записи
);
2. Параметры для фильтрации по таксономиям
category_name
— выборка по категории (slug).
$args = array(
'category_name' => 'news', // Записи из категории "news"
);
tag
— выборка по тегу.
$args = array(
'tag' => 'wordpress', // Записи с тегом "wordpress"
);
tax_query
— сложные запросы по таксономиям.
$args = array(
'tax_query' => array(
array(
'taxonomy' => 'category',
'field' => 'slug',
'terms' => 'tutorials',
),
),
);
3. Параметры для фильтрации по метаполям
meta_key
иmeta_value
— выборка по метаполям.
$args = array(
'meta_key' => 'rating',
'meta_value' => '5',
);
meta_query
— сложные запросы по метаполям.
$args = array(
'meta_query' => array(
array(
'key' => 'price',
'value' => 100,
'compare' => '>=',
'type' => 'NUMERIC',
),
),
);
4. Параметры для сортировки
orderby
— сортировка по полю (например,date
,title
,meta_value
).
$args = array(
'orderby' => 'date', // Сортировка по дате
'order' => 'DESC', // По убыванию
);
order
— направление сортировки (ASC
— по возрастанию,DESC
— по убыванию).
5. Параметры для пагинации
paged
— номер страницы для пагинации.
$args = array(
'paged' => get_query_var('paged') ? get_query_var('paged') : 1, // Текущая страница
);
offset
— смещение (пропуск определенного количества записей).
$args = array(
'offset' => 5, // Пропустить первые 5 записей
);
6. Параметры для поиска
s
— поиск по ключевому слову.
$args = array(
's' => 'WordPress', // Поиск записей с ключевым словом "WordPress"
);
Примеры использования WP_Query
1. Получить последние 5 записей из категории «news»:
$args = array(
'post_type' => 'post',
'category_name' => 'news',
'posts_per_page' => 5,
);
$query = new WP_Query($args);
2. Получить записи с определенным метаполем:
$args = array(
'meta_key' => 'featured',
'meta_value' => 'yes',
);
$query = new WP_Query($args);
3. Получить записи с сортировкой по метаполю:
$args = array(
'meta_key' => 'rating',
'orderby' => 'meta_value_num',
'order' => 'DESC',
);
$query = new WP_Query($args);
4. Получить записи с использованием tax_query
:
$args = array(
'post_type' => 'product',
'tax_query' => array(
array(
'taxonomy' => 'product_category',
'field' => 'slug',
'terms' => 'electronics',
),
),
);
$query = new WP_Query($args);
Методы и свойства WP_Query
После создания запроса, вы можете использовать методы и свойства объекта WP_Query
:
have_posts()
— проверяет, есть ли записи.the_post()
— переходит к следующей записи.get_posts()
— возвращает массив записей.found_posts
— общее количество найденных записей.max_num_pages
— общее количество страниц для пагинации.
Сброс данных запроса
После использования WP_Query
важно сбросить данные запроса, чтобы избежать конфликтов с основным циклом WordPress:
wp_reset_postdata();
Заключение
WP_Query
— это мощный инструмент для работы с контентом в WordPress. Он позволяет создавать сложные запросы с учетом множества параметров. Используйте его для создания пользовательских циклов, фильтрации записей и интеграции с пользовательскими типами записей и таксономиями.