По умолчанию WordPress REST API возвращает основной набор данных для постов, но часто возникает необходимость расширить ответ, добавив дополнительную информацию. Одной из частых задач является вывод данных о владельце поста — авторе. В этой статье разберём, как именно добавить поле с владельцем поста в REST API, чтобы получать его ID, имя, никнейм и даже ссылку на профиль.
Почему важно добавлять владельца поста в REST API WordPress
Стандартный REST API WordPress возвращает авторский ID поста, но этого не всегда достаточно. Например, при создании фронтенд-приложения на React или Vue, где нужно отобразить имя автора или ссылку на его профиль, требуется расширить ответ API, добавив эти данные.
Добавление владельца поста в REST API позволяет:
- Получить расширенную информацию об авторе без дополнительных запросов.
- Упростить работу фронтенда и уменьшить количество запросов к серверу.
- Улучшить кастомизацию и интеграцию REST API с внешними сервисами.
Как добавить поле владельца поста в REST API — пример на PHP
Для расширения REST API WordPress используется функция register_rest_field. Она позволяет добавить новое поле к объектам, которые возвращает API. Рассмотрим, как добавить поле post_owner, содержащее информацию об авторе поста.
Добавим следующий код в файл вашего плагина или functions.php темы:
add_action('rest_api_init', 'wpmeta_register_post_owner_field');
function wpmeta_register_post_owner_field() {
register_rest_field(
'post', // тип объекта
'post_owner', // имя нового поля
array(
'get_callback' => 'wpmeta_get_post_owner_data',
'schema' => null,
)
);
}
function wpmeta_get_post_owner_data($object) {
$author_id = $object['author'];
$user = get_userdata($author_id);
if (!$user) {
return null;
}
return array(
'ID' => $user->ID,
'display_name' => $user->display_name,
'user_nicename' => $user->user_nicename,
'profile_url' => get_author_posts_url($user->ID),
);
}Объяснение кода:
- С помощью
register_rest_fieldдобавляем полеpost_ownerк типу записиpost. - В колбэке
wpmeta_get_post_owner_dataполучаем данные автора по ID, который приходит в объекте поста. - Возвращаем массив с нужной информацией: ID, отображаемое имя, никнейм и URL профиля.
Тестирование нового поля в REST API
После добавления кода обновите кеш и выполните запрос к REST API для получения поста, например:
https://your-site.ru/wp-json/wp/v2/posts/123В ответе среди данных поста вы увидите новое поле post_owner с информацией об авторе:
{
"id": 123,
"date": "2024-06-01T12:00:00",
// ... другие поля ...
"author": 5,
"post_owner": {
"ID": 5,
"display_name": "Иван Иванов",
"user_nicename": "ivan-ivanov",
"profile_url": "https://your-site.ru/author/ivan-ivanov"
}
}Дополнительные советы и расширения
Кеширование данных владельца
Если на сайте много запросов к REST API, рекомендуем кешировать данные автора, чтобы снизить нагрузку на базу данных. Можно использовать Transients API для временного хранения информации.
Добавление поля владельца к другим типам записи
Если у вас есть кастомные типы записи, для которых тоже нужен владелец, добавьте вызов register_rest_field для каждого типа, например:
register_rest_field('custom_post_type', 'post_owner', array( ... ));Использование плагина Clearfy Pro для расширения REST API
Плагин Clearfy Pro позволяет с помощью удобного интерфейса управлять полями REST API и расширять его без написания кода. Если вы не хотите писать самостоятельно, этот инструмент значительно ускорит процесс.
Итоги
Добавление информации о владельце поста в REST API WordPress — простая и полезная задача, которая улучшит взаимодействие фронтенда с сайтом и расширит возможности API. Используйте функцию register_rest_field и описанный выше пример, чтобы быстро получить все необходимые данные об авторе.