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, чтобы сбросить данные постов после завершения цикла.
Функции WordPress
- unregister_post_type
- post_type_supports
- post_type_exists
- get_post_types
- get_post_type_object
- get_post_format
- get_next_posts_page_link
- is_attachment
- get_default_post_to_edit
- wp_trash_post
- wp_publish_post
- update_post_meta
- add_post_meta
- register_post_type
- get_post_status
- the_post
- is_main_query
- get_query_var
- wp_html_excerpt
- wp_count_posts
- in_the_loop
- WP_Meta_Query
- wp_reset_query
- query_posts
- wp_insert_post
- wp_update_post
- wp_delete_post
- wp_get_recent_posts
- is_year
- is_time
- get_page_by_title
- get_children
- get_boundary_post
- get_pages
- get_the_date
- the_date
- get_post
- get_post_meta
- get_the_author_meta
- post_content
- post_author
- get_post_field
- get_the_content
- setup_postdata
- the_content
- have_posts
- the_title
- wp_reset_postdata
- WP_Query