WP_Query: Получение записей в WordPress – руководство для начинающих

# WP_Query: Рекомендуемый способ получения записей в WordPress

WP_Query — это класс в WordPress, который позволяет извлекать записи из базы данных на основе заданных параметров. Он используется в большинстве функций для выборки записей, таких как get_posts() и query_posts().

## Введение в WP_Query

WP_Query необходим для работы с записями в WordPress. Например, он позволяет извлекать записи:

- за определённый период времени;
- из заданной категории или с определенными тегами;
- новые или популярные записи;
- записи с определенными пользовательскими полями.

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

### Пример простого запроса

```php
$query = new WP_Query( [ 'category_name' => 'news' ] );

Этот запрос извлекает записи из категории "новости".

Теперь переменная $query содержит объект с результатами запроса. Давайте обработаем результаты:

while ( $query->have_posts() ) {
    $query->the_post();
    the_title(); // выводим заголовок записи
}

wp_reset_postdata(); // Важно: восстанавливаем глобальную переменную $post

Параметры WP_Query

Основные параметры запроса

  • post_type: тип записей, например post, page.
  • posts_per_page: количество записей на странице.
  • orderby: поле для сортировки (например, по дате или заголовку).
  • order: направление сортировки (ASC или DESC).
  • post_status: статус записей (например, publish для опубликованных).
  • offset: количество записей, которые нужно пропустить.

Пример более сложного запроса

$args = [
    'posts_per_page' => 5,
    'orderby' => 'comment_count',
    'order' => 'DESC',
    'post_status' => 'publish',
];

$query = new WP_Query( $args );

if ( $query->have_posts() ) {
    echo '
    '; while ( $query->have_posts() ) { $query->the_post(); echo '
  • ' . esc_html( get_the_title() ) . '
  • '; } echo '
'; } else { // Если записей не найдено echo '

Записи не найдены.

'; } // Восстановить оригинальные данные $post wp_reset_postdata();

Как избежать вмешательства в глобальную переменную $post

Если вам не нужно использовать стандартные функции, работающие с глобальной переменной $post, вы можете использовать метод next_post():

while ( $query->have_posts() ) {
    $my_post = $query->next_post();
    $url = get_permalink( $my_post );
}

Использование get_posts()

get_posts() позволяет получать записи с использованием параметров, как и в WP_Query, но в более простом виде. Пример:

$args = [
    'post_type' => 'page',
];
$my_posts = get_posts( $args );

foreach ( $my_posts as $my_post ) {
    echo '

' . esc_html( $my_post->post_title ) . '

'; }

Заключение

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

Leave a Reply

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