Вопрос или проблема
Добавьте изображение(миниатюру) к конечной точке API поиска.
add_action('rest_api_init', function () {
// Регистрирует поле REST для конечной точки /wp/v2/search.
register_rest_field(
'search-result'
, 'thumbnail_url'
, [
'get_callback' => function ($post_arr) {
return wp_get_attachment_url(get_post_thumbnail_id($post_arr['id']), 'thumbnail');
},
]
);
});
.
Ответ или решение
Для добавления URL-адреса миниатюры (фFeatured image) в ответ REST API для поиска в WordPress, необходимо зарегистрировать новое поле в REST API. Это позволит получать URL миниатюры в ответах на запросы к эндпоинту поиска. Ниже приведено подробное описание процесса.
Как добавить URL миниатюры в REST API
-
Хук
rest_api_init
: Мы будем использовать хукrest_api_init
, чтобы зарегистрировать новое поле для нашего кастомного REST API. Этот хук вызывается, когда REST API готов к инициализации. -
Регистрация нового поля: Используется функция
register_rest_field()
, которая позволяет добавить новое поле к результирующему массиву данных. В нашем случае это будет полеthumbnail_url
. -
Callback функция: Для вычисления значения этого поля необходимо создать callback-функцию, которая будет получать ID поста и возвращать URL миниатюры. Мы используем функции WordPress для получения ID миниатюры и ее URL.
add_action('rest_api_init', function () {
// Регистрируем REST поле для эндпоинта /wp/v2/search.
register_rest_field(
'search-result', // название типа поста
'thumbnail_url', // имя нового поля
[
'get_callback' => function ($post_arr) {
// Получаем URL миниатюры для данного поста
return wp_get_attachment_url(get_post_thumbnail_id($post_arr['id']));
},
]
);
});
Объяснение кода
-
add_action('rest_api_init', callback_function)
: Подключает вашу функцию к хукуrest_api_init
, который запускается при инициализации REST API. -
register_rest_field()
: Эта функция принимает три параметра:search-result
: Определяет, к какому типу постов будет добавлено поле. В данном случае это результаты поиска.thumbnail_url
: Название нового поля, которое будет возвращаться в ответах API.- Массив, содержащий callback-функцию, которая отвечает за получение значения поля.
-
wp_get_attachment_url(get_post_thumbnail_id($post_arr['id']))
: Мы сначала получаем ID миниатюры с помощьюget_post_thumbnail_id()
, а потом получаем URL этой миниатюры с помощьюwp_get_attachment_url()
.
Примеры использования
После добавления этого кода в файл вашей темы (обычно в functions.php
), любой запрос к эндпоинту поиска, например GET /wp-json/wp/v2/search?search=ваш_поиск
, будет включать URL миниатюры в каждом объекте результата, что повысит качество информации, предоставляемой через API.
Итог
Добавление URL миниатюры в ответ REST API позволяет улучшить взаимодействие с вашим контентом и предоставляет разработчикам более богатую информацию для использования в приложениях или на веб-сайтах. Этот метод отлично вписывается в современные практики разработки и является простым, но эффективным способом обогащения данных, получаемых через API.