Как добавить названия категорий и тегов к ответу REST API в WordPress

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

Шаг 1: Добавление функции для обработки ответа REST API

Для начала нам нужно создать функцию, которая будет добавлять названия категорий и тегов к ответу REST API. Вставьте следующий код в файл functions.php вашей темы или создайте новый плагин:


function add_category_and_tag_names_to_rest($response, $post, $request) {
    // Проверяем, есть ли категории и теги в ответе
    if (isset($response->data['categories']) && is_array($response->data['categories'])) {
        $category_ids = $response->data['categories'];
        $category_names = array();

        foreach ($category_ids as $category_id) {
            $term = get_term($category_id, 'category');
            if ($term && !is_wp_error($term)) {
                $category_names[] = $term->name;
            }
        }

        // Добавляем имена категорий в ответ
        $response->data['category_names'] = $category_names;
    }

    if (isset($response->data['tags']) && is_array($response->data['tags'])) {
        $tag_ids = $response->data['tags'];
        $tag_names = array();

        foreach ($tag_ids as $tag_id) {
            $term = get_term($tag_id, 'post_tag');
            if ($term && !is_wp_error($term)) {
                $tag_names[] = $term->name;
            }
        }

        // Добавляем имена тегов в ответ
        $response->data['tag_names'] = $tag_names;
    }

    return $response;
}

Шаг 2: Добавление функции к фильтру REST API для постов

Теперь нам нужно подключить нашу функцию к фильтру REST API, чтобы она применялась ко всем ответам, содержащим посты. Добавьте следующий код сразу после функции, которую мы создали на предыдущем шаге:


add_filter('rest_prepare_post', 'add_category_and_tag_names_to_rest', 10, 3);

Заключение

Вот и все! Теперь, когда вы запрашиваете посты через REST API, в ответе будут включены не только ID категорий и тегов, но и их названия. Это может быть особенно полезно, если вы разрабатываете фронтенд-приложение, которое должно отображать читабельные имена категорий и тегов.

Пример ответа REST API с добавленными названиями категорий и тегов может выглядеть так:


{
    "id": 1,
    "date": "2024-07-15T12:00:00",
    "title": {
        "rendered": "Заголовок поста"
    },
    "categories": [2, 4],
    "category_names": ["Категория 1", "Категория 2"],
    "tags": [6, 8],
    "tag_names": ["Тег 1", "Тег 2"]
}

Надеемся, что эта инструкция была вам полезна. Удачи в разработке ваших проектов на WordPress!

Обсудим ваш проект?

Не ждите идеального момента или подходящего времени — начинайте прямо сейчас! Свяжитесь со мной, и я помогу воплотить ваши идеи в реальность.