# Функция GET_POSTS() │ WP 1.2.0
Функция get_posts()
позволяет получить массив записей (постов, страниц, вложений или пользовательских типов постов) из базы данных. Вы можете указать различные параметры для получения нужных записей.
## Предустановленные параметры
У этой функции есть несколько предустановленных параметров, которые при необходимости стоит изменить:
- **post_status = publish** — выбирает только опубликованные записи. Для типов постов, например, вложений, статус по умолчанию будет "наследовать".
- **post_type = post** — по умолчанию выбираются посты. Если вы хотите выбрать другой тип поста, нужно указать его.
- **numberposts = 5** — по умолчанию выводится 5 записей. Если вы хотите больше, не забудьте изменить этот параметр.
- **suppress_filters = true** — отключает некоторые фильтры. Подробнее об этом можно прочитать в документации.
- **ignore_sticky_posts = true** — этот параметр нельзя изменить!
- **no_found_rows = true** — этот параметр тоже нельзя изменить!
Параметры ignore_sticky_posts
и no_found_rows
игнорируются этой функцией и оба установлены в true.
Эта функция является аналогом query_posts()
, но не вмешивается в глобальный запрос WordPress, а создает отдельный экземпляр класса WP_Query
.
## Возвращаемое значение
Функция возвращает массив объектов типа WP_Post
или пустой массив, если записи не найдены. Каждый объект будет выглядеть следующим образом:
```php
array(
[0] => object(WP_Post)#4692 (24) {
["ID"] => int(822),
["post_author"] => string(1) "1",
["post_date"] => string(19) "2016-07-07 10:28:57",
["post_content"] => string(6225) "Содержимое поста",
["post_title"] => string(37) "Мертв��я Си (14 фотографий)",
...
},
[1] => object(WP_Post) {...},
...
)
Шаблон использования
Вызовите функцию get_posts()
с массивом параметров:
$my_posts = get_posts( [
'numberposts' => 5,
'category' => 0,
'orderby' => 'date',
'order' => 'DESC',
'include' => array(),
'exclude' => array(),
'meta_key' => '',
'meta_value' => '',
'post_type' => 'post',
'suppress_filters' => true,
] );
foreach( $my_posts as $post ) {
setup_postdata( $post );
// выводим заголовок поста
the_title();
}
wp_reset_postdata(); // сброс данных поста
Параметры $args
Функция get_posts()
является оберткой для WP_Query
, поэтому она может принимать те же параметры.
-
numberposts (int) — количество выводимых постов.
-
posts_per_page (int) — тоже количество постов, на странице.
-
offset (int) — смещение от первого поста.
-
tax_query (array) — фильтрация по таксономиям.
-
category (int|string|array) — ID категории, из которой нужно получить посты.
Вы можете указать ID с минусом, чтобы исключить категорию (например,
-3
), или несколько ID через запятую (например,3,5,12
). -
tag (string) — получение постов с определенными тегами.
-
include (string|int|array) — ID постов для получения.
-
exclude (string|int) — ID постов для исключения от результата.
-
meta_key (string) — пользовательское поле для фильтрации.
-
meta_value (string) — значение пользовательского поля.
-
post_type (string|array) — типы постов, которые нужно получить (по умолчанию — 'post').
Например, можно указать 'attachment' для получения вложений или 'page' для страниц.
-
post_status (string) — статус поста (например, опубликован, черновик и т.д.).
Статусы, которые можно указать:
- publish — опубликованный пост
- draft — черновик
- pending — на модерации
и другие.
-
order (string) — направление сортировки (ASC или DESC).
-
orderby (string/array) — по каким полям сортировать посты.
Примеры использования
1. Получение последних 10 постов
$args = [
'numberposts' => 10
];
$latest_posts = get_posts( $args );
2. Получение вложений
$attachments = get_posts( [
'post_type' => 'attachment',
'posts_per_page' => -1,
'post_parent' => null
] );
if ( $attachments ) {
foreach ( $attachments as $post ) {
setup_postdata( $post );
the_title();
}
wp_reset_postdata();
}
3. Получение постов с определенным пользовательским полем
$args = [
'post_type' => 'product',
'meta_query' => [
[
'key' => 'featured',
'value' => 'yes',
]
],
];
$postslist = get_posts( $args );
4. Получение постов по таксономии
$args = [
'tax_query' => [
[
'taxonomy' => 'genre',
'field' => 'slug',
'terms' => 'jazz'
]
]
];
$postslist = get_posts( $args );
Заключение
Функция get_posts()
является мощным инструментом для вытаскивания нужных вам записей из базы данных WordPress с помощью различных параметров фильтрации и сортировки. Используйте её в своих проектах, чтобы получить именно те посты, которые вам нужны!