Функция GET_POSTS() в WordPress: параметры, возвращаемое значение, шаблон использования

# Функция 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 с помощью различных параметров фильтрации и сортировки. Используйте её в своих проектах, чтобы получить именно те посты, которые вам нужны!

Leave a Reply

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