Как создать удалённый вывод постов WordPress через REST API с примерами кода

REST API — мощный инструмент WordPress, позволяющий получать данные сайта в формате JSON для использования на внешних ресурсах. В этой статье мы подробно разберём, как создать удалённый вывод постов WordPress через REST API, настроить выборку данных, добавить свои поля и обеспечить безопасность. Также рассмотрим практические примеры кода и полезные плагины для расширения функционала.

Что такое REST API в WordPress и зачем он нужен

REST API — это интерфейс программирования приложений, который позволяет отправлять HTTP-запросы к сайту WordPress и получать данные в формате JSON. Благодаря этому можно создавать мобильные приложения, интеграции, виджеты и другие внешние сервисы, которые используют контент сайта без прямого доступа к базе данных или админке.

Основные возможности REST API в WordPress:

  • Получение списка постов, страниц, категорий, тегов и других таксономий;
  • Создание, обновление и удаление контента (при наличии прав);
  • Аутентификация и безопасный обмен данными;
  • Расширение стандартных эндпоинтов своими параметрами и полями.

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

Настройка вывода постов через REST API: что нужно знать

Стандартный эндпоинт для вывода постов выглядит так:

https://ваш-сайт.ru/wp-json/wp/v2/posts

Этот запрос возвращает список публикаций с полями, которые по умолчанию доступны. Но зачастую нужно:

  • Выводить дополнительные пользовательские поля (custom fields);
  • Фильтровать посты по своим параметрам;
  • Изменять формат вывода;
  • Добавлять свои эндпоинты для особых задач.

Для этого придется писать свой код в файле functions.php или создавать небольшой плагин.

Добавление пользовательских полей в ответ REST API

Допустим, у вас есть пользовательское поле ACF с ключом wpstandart_custom_info, и вы хотите, чтобы оно отображалось в ответе API.

Добавим следующий код:

add_action('rest_api_init', function () {
    register_rest_field('post', 'wpstandart_custom_info', [
        'get_callback' => 'wpstandart_get_custom_info',
        'schema' => null,
    ]);
});

function wpstandart_get_custom_info($object) {
    return get_post_meta($object['id'], 'wpstandart_custom_info', true);
}

Теперь при запросе /wp-json/wp/v2/posts в каждом посте появится поле wpstandart_custom_info с нужными данными.

Фильтрация постов по пользовательскому полю через REST API

По умолчанию фильтрация по метаданным в REST API не включена. Добавим возможность фильтровать посты по ключу wpstandart_custom_info.

add_filter('rest_post_query', 'wpstandart_filter_rest_post_query', 10, 2);
function wpstandart_filter_rest_post_query($args, $request) {
    if (!empty($request['wpstandart_custom_info'])) {
        $args['meta_query'] = [
            [
                'key' => 'wpstandart_custom_info',
                'value' => sanitize_text_field($request['wpstandart_custom_info']),
                'compare' => '=',
            ]
        ];
    }
    return $args;
}
<

Теперь можно делать запросы вида:

https://ваш-сайт.ru/wp-json/wp/v2/posts?wpstandart_custom_info=значение

И получать только нужные посты.

Создание собственного эндпоинта для специфических задач

Если стандартных возможностей REST API недостаточно, можно создать свой собственный эндпоинт. Например, сделаем эндпоинт, возвращающий последние 5 опубликованных постов с определённым форматом вывода.

add_action('rest_api_init', function () {
    register_rest_route('wpstandart/v1', '/latest-posts', [
        'methods' => 'GET',
        'callback' => 'wpstandart_get_latest_posts',
        'permission_callback' => '__return_true',
    ]);
});

function wpstandart_get_latest_posts($request) {
    $args = [
        'post_type' => 'post',
        'posts_per_page' => 5,
        'post_status' => 'publish'
    ];
    $query = new WP_Query($args);
    $posts = [];
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $posts[] = [
                'id' => get_the_ID(),
                'title' => get_the_title(),
                'excerpt' => get_the_excerpt(),
                'date' => get_the_date('c'),
                'custom_info' => get_post_meta(get_the_ID(), 'wpstandart_custom_info', true),
            ];
        }
        wp_reset_postdata();
    }
    return $posts;
}

Данный эндпоинт будет доступен по адресу /wp-json/wpstandart/v1/latest-posts и выводить 5 последних постов с нужными полями.

Обеспечение безопасности и оптимизация запросов REST API

При работе с REST API важно учитывать безопасность. Если ваши эндпоинты позволяют изменять данные, обязательна аутентификация и проверка прав пользователя. В нашем случае с выводом постов это не требуется, но для приватных данных следует использовать nonce или OAuth.

Также стоит ограничивать количество выводимых записей, чтобы не перегружать сервер. В стандартных эндпоинтах можно использовать параметр per_page, но с разумным лимитом, например 10 или 20.

Для удобства и расширенных настроек можно использовать плагин Clearfy Pro, который помогает оптимизировать REST API и управлять доступом к нему.

Полезные плагины для работы с REST API и кастомизацией

Для упрощения работы с REST API можно использовать следующие плагины:

  • ACF to REST API — добавляет поля Advanced Custom Fields в REST API без дополнительного кода;
  • WP REST Filter — расширяет возможности фильтрации запросов;
  • WPGraphQL — альтернативный API с использованием GraphQL для более гибких запросов;
  • Clearfy Pro — оптимизация и безопасность REST API;
  • WP REST Cache — кэширование ответов для повышения производительности.

Выбирайте плагины исходя из задач вашего проекта и не забывайте тестировать их совместимость.

Подведение итогов: что мы изучили

В этой статье мы подробно рассмотрели, как создать удалённый вывод постов WordPress через REST API. Вы узнали, как:

  • Добавлять пользовательские поля в стандартный ответ API;
  • Реализовывать фильтрацию постов по метаданным;
  • Создавать собственные эндпоинты с кастомной логикой;
  • Обеспечивать безопасность и оптимизировать запросы;
  • Использовать плагины для расширения функционала REST API.

Используйте полученные знания для разработки интеграций, мобильных приложений и нестандартных решений на базе WordPress.

Как автоматизировать удаление старых черновиков в WordPress
14.04.2026
Как добавить настройку удаления старых комментариев в WordPress
14.02.2026
Как избежать проблемы с передачей данных в WordPress: практические советы
18.03.2026
Как автоматически отключить отклик AJAX в WooCommerce без потери функциональности
23.06.2026
Как установить и настроить WooCommerce для начинающих
22.11.2025