Конечная точка REST API WordPress (Последние записи авторов и категорий)

Вопрос или проблема

Мне нужно получить всех авторов, которые опубликовали посты за последние 24 часа, и их последние посты, не старше 24 часов, через REST Api.

Это возможно? Как мне создать пользовательский конечный пункт или что-то подобное?

Я разрабатываю приложение на Ionic.

По умолчанию это невозможно сделать с WordPress, но это возможно с помощью пользовательского конечного пункта. Вы можете найти документацию в справочнике REST API: https://developer.wordpress.org/rest-api/extending-the-rest-api/adding-custom-endpoints/

.

Ответ или решение

Для реализации запроса к REST API WordPress, который будет возвращать всех авторов, разместивших посты за последние 24 часа, вместе с их последними постами, нам необходимо создать собственную конечную точку (endpoint). Это решение требует предварительного знакомства с концепцией REST API и немножко программирования на языке PHP. В данном ответе мы пошагово рассмотрим, как это сделать, включая код и необходимые пояснения.

Шаг 1: Определение требований

Для реализации данного функционала мы должны учесть следующие ключевые моменты:

  1. Выбор авторов, разместивших посты за последние 24 часа.
  2. Получение последних постов этих авторов, также опубликованных за последние 24 часа.
  3. Создание кастомной конечной точки для доступа к этой информации через REST API.

Шаг 2: Создание кастомного endpoint

Первым шагом будет добавление кода в файл вашей темы (functions.php) или в плагин, если вы разрабатываете его. Мы будем использовать функцию register_rest_route для создания нового endpoint.

add_action('rest_api_init', function() {
    register_rest_route('custom/v1', '/recent-authors-posts', array(
        'methods' => 'GET',
        'callback' => 'get_recent_authors_posts',
    ));
});

function get_recent_authors_posts(WP_REST_Request $request) {
    $args = array(
        'date_query' => array(
            array(
                'after' => '24 hours ago',
            ),
        ),
        'posts_per_page' => -1,
    );

    $recent_posts = get_posts($args);

    // Инициализируем массив для хранения авторов и их постов.
    $authors_posts = array();

    foreach ($recent_posts as $post) {
        $author_id = $post->post_author;

        if (!isset($authors_posts[$author_id])) {
            $authors_posts[$author_id] = array(
                'author_name' => get_the_author_meta('display_name', $author_id),
                'posts' => array(),
            );
        }

        // Добавляем пост в массив автора.
        $authors_posts[$author_id]['posts'][] = array(
            'title' => get_the_title($post),
            'date' => $post->post_date,
            'permalink' => get_permalink($post),
        );
    }

    return new WP_REST_Response(array_values($authors_posts), 200);
}

Шаг 3: Описание функций и логики

  • date_query здесь используется для фильтрации постов, созданных за последние 24 часа, что позволяет легко настроить временные рамки.
  • Мы используем get_posts для получения всех постов, которые соответствуют этому критерию.
  • Создается массив $authors_posts, где для каждого автора хранится его имя и массив постов.
  • В конце мы возвращаем массив авторов и их постов в формате JSON с использованием WP_REST_Response.

Шаг 4: Тестирование конечной точки

После добавления этого кода к вашей теме или плагину, вы сможете протестировать конечную точку через браузер или инструменты для разработчиков. Чтобы получить данные, перейдите по следующему URL:

http://ваш-сайт/wp-json/custom/v1/recent-authors-posts

Заключение

Создание кастомной конечной точки в WordPress предоставляет гибкость для получения специфической информации, которая может быть полезной для вашего Ionic приложения. С помощью этого решения вы теперь можете запрашивать информацию о последних постах авторов за последние 24 часа. Если у вас есть вопросы или нужна дополнительная помощь, не стесняйтесь обращаться.

Оцените материал
Добавить комментарий

Капча загружается...