Вопрос или проблема
Мне нужно получить всех авторов, которые опубликовали посты за последние 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: Определение требований
Для реализации данного функционала мы должны учесть следующие ключевые моменты:
- Выбор авторов, разместивших посты за последние 24 часа.
- Получение последних постов этих авторов, также опубликованных за последние 24 часа.
- Создание кастомной конечной точки для доступа к этой информации через 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 часа. Если у вас есть вопросы или нужна дополнительная помощь, не стесняйтесь обращаться.