Документация WordPress

get_posts

Функция get_posts() используется для получения списка постов из базы данных. Она работает аналогично WP_Query, но возвращает простой массив объектов записей без сложных возможностей пагинации.

Синтаксис

get_posts( array|string $args = array() );

Функция принимает массив аргументов $args, аналогичный WP_Query, и возвращает массив объектов WP_Post.

Аргументы

Основные параметры, которые можно передавать в get_posts():

Параметр Тип Описание
numberposts int Количество записей (по умолчанию 5). Используйте -1, чтобы получить все записи.
post_type string Тип записей (post, page, custom_post_type). По умолчанию post.
post_status string Статус записей (publish, draft, private и т. д.). По умолчанию publish.
orderby string Поле для сортировки (date, title, rand, meta_value, и т. д.).
order string Порядок (ASC или DESC). По умолчанию DESC.
category int ID категории (используется для старой таксономии).
category_name string Слаг категории (news, blog).
meta_key string Ключ кастомного поля (используется для сортировки или фильтрации).
meta_value string Значение кастомного поля.
include array ID постов, которые нужно включить.
exclude array ID постов, которые нужно исключить.
suppress_filters bool Отключение фильтров (по умолчанию true).

Полный список параметров можно найти в документации WordPress.

Примеры использования

1. Получение последних 10 постов

2. Получение всех постов определённого типа (например, product)

Чем get_posts() отличается от WP_Query?

Функция Возвращает Фильтры и хуки Поддержка пагинации
get_posts() Массив объектов WP_Post Отключены (suppress_filters => true) Нет
WP_Query Полноценный объект с методами (have_posts(), the_post()) Полностью поддерживаются Да

Когда использовать get_posts()?

  • Если вам нужно просто получить массив постов без сложной логики.
  • Когда не нужна пагинация.
  • Если не требуются дополнительные фильтры.

Когда использовать WP_Query?

  • Если нужна пагинация ($wp_query->max_num_pages).
  • Если необходимо использовать have_posts(), the_post().
  • Если важно учитывать все стандартные фильтры и хуки.

Функция get_posts() — это удобный инструмент для быстрого получения постов в WordPress. Она проще, чем WP_Query, и идеально подходит для небольших выборок записей. Если же вам нужна более гибкая система с поддержкой пагинации, лучше использовать WP_Query. Не забываем использовать в конце функцию wp_reset_postdata, чтобы сбросить данные постов после завершения цикла.

post WP_Query