Добавление URL миниатюры записи в ответах API поиска или API записей REST

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

Добавьте изображение(миниатюру) к конечной точке 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

  1. Хук rest_api_init: Мы будем использовать хук rest_api_init, чтобы зарегистрировать новое поле для нашего кастомного REST API. Этот хук вызывается, когда REST API готов к инициализации.

  2. Регистрация нового поля: Используется функция register_rest_field(), которая позволяет добавить новое поле к результирующему массиву данных. В нашем случае это будет поле thumbnail_url.

  3. 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.

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

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