Как добавить владельца постов в REST API WordPress

В стандартной выдаче REST API WordPress информация о владельце (авторе) постов обычно ограничена ID, а полное имя автора, email или другие данные не всегда доступны. В этой статье мы подробно рассмотрим, как расширить стандартный REST API, чтобы возвращать расширенную информацию о владельце постов. Это полезно, когда вы создаёте фронтенд на React, Vue или другом фреймворке и хотите отображать более подробные данные об авторе.

Почему важно добавить данные владельца в REST API WordPress

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

Также важно понимать, что расширять REST API удобнее всего через хуки WordPress, что обеспечит совместимость с обновлениями ядра и плагинов.

Как расширить REST API для вывода данных автора: практическое руководство

Для начала мы создадим функцию, которая добавит новое поле author_info к ответу REST API для постов. В это поле мы поместим имя автора, URL аватара и краткое описание.

Добавим следующий код в файл functions.php вашей темы или в отдельный плагин:

function wpexpert_add_author_info_to_rest() {
    register_rest_field(
        'post', // Тип записи
        'author_info', // Название нового поля
        array(
            'get_callback' => 'wpexpert_get_author_info',
            'schema' => null,
        )
    );
}
add_action('rest_api_init', 'wpexpert_add_author_info_to_rest');

function wpexpert_get_author_info($object) {
    $author_id = $object['author'];
    $user = get_userdata($author_id);
    if (!$user) {
        return null;
    }

    return array(
        'id' => $author_id,
        'name' => $user->display_name,
        'avatar' => get_avatar_url($author_id),
        'description' => get_the_author_meta('description', $author_id),
        'url' => get_author_posts_url($author_id),
    );
}

Этот код добавляет к каждому объекту поста в REST API поле author_info, содержащее полезные данные об авторе.

Пояснения к коду

  • register_rest_field — регистрирует новое поле в REST API для типа записи post.
  • get_callback указывает функцию, которая возвращает данные для этого поля.
  • wpexpert_get_author_info — функция, которая получает ID автора, извлекает данные пользователя и возвращает массив с нужной информацией.

Как ограничить доступ к данным автора в REST API для безопасности

Иногда не все данные автора стоит показывать публично, например email или телефон. В таком случае можно добавить проверку прав текущего пользователя и показать расширенную информацию только администраторам или авторизованным пользователям.

Добавим проверку в нашу функцию:

function wpexpert_get_author_info($object) {
    $author_id = $object['author'];
    $user = get_userdata($author_id);
    if (!$user) {
        return null;
    }

    $current_user = wp_get_current_user();
    $can_view_email = current_user_can('edit_posts'); // Пример проверки прав

    $author_info = array(
        'id' => $author_id,
        'name' => $user->display_name,
        'avatar' => get_avatar_url($author_id),
        'description' => get_the_author_meta('description', $author_id),
        'url' => get_author_posts_url($author_id),
    );

    if ($can_view_email) {
        $author_info['email'] = $user->user_email;
    }

    return $author_info;
}

Теперь поле email будет добавлено только если текущий пользователь имеет право edit_posts.

Примеры использования расширенного REST API на фронтенде

Вызов REST API для получения постов с автором:

fetch('https://example.com/wp-json/wp/v2/posts')
  .then(response => response.json())
  .then(posts => {
    posts.forEach(post => {
      console.log(post.author_info.name);
      console.log(post.author_info.avatar);
      console.log(post.author_info.description);
    });
  });
<

Это позволяет динамически получить и отобразить данные об авторе без дополнительных запросов.

Полезные плагины для расширения REST API и работы с авторами

Если вы хотите расширять REST API более гибко и без ручного кода, обратите внимание на плагины:

  • Clearfy Pro — оптимизация и расширение функционала WordPress, в том числе REST API.
  • WPRemark — расширение комментариев и данных пользователей, может помочь с кастомизацией.

Использование плагинов удобно, если у вас мало опыта с кодом или необходим сложный функционал.

Выводы и рекомендации по расширению REST API WordPress

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

Используйте приведённый пример кода как основу и адаптируйте под свои задачи. Не забывайте тестировать производительность и безопасность при расширении API.

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

Как успешно обновлять WooCommerce без потери данных
26.04.2026
Как создать динамический фильтрованный список статей в WordPress
26.01.2026
Как изменить URL AJAX-запросов в WordPress без конфликтов
03.04.2026
WooCommerce: как автоматически удалять зависшие варианты товаров с нулевым запасом
23.07.2026
WooCommerce: как автоматически очищать зависшие варианты товаров без плагинов
01.06.2026