WP REST API — мощный инструмент для работы с данными WordPress через внешние приложения и фронтенд. Однако по умолчанию в ответах API возвращается много полей, которые не всегда нужны. Это увеличивает размер ответов, снижает производительность и может раскрывать лишнюю информацию. В этой статье расскажем, как удалять неиспользуемые поля из REST API, чтобы сделать ответы легче, быстрее и безопаснее.
Почему важно оптимизировать поля в WP REST API
По умолчанию REST API WordPress возвращает множество метаданных, вложенных объектов и полей, которые не всегда нужны вашему приложению или сайту. Это приводит к нескольким проблемам:
- Больший объем данных. Увеличивается время передачи данных по сети и нагрузка на сервер.
- Безопасность. Некоторые поля могут раскрывать внутренние данные, которые не должны быть публичными.
- Сложность обработки. Большие ответы сложнее обрабатывать на клиенте, особенно в мобильных приложениях.
Удаление ненужных полей сделает API более "чистым" и удобным для работы.
Какие поля можно удалить из WP REST API
В зависимости от задачи вы можете убрать:
- Поля метаданных (custom fields), если они не используются во фронтенде.
- Поля автора, если данные автора не нужны.
- Поля формата даты, статуса публикации, ссылок на вложения и другие технические поля.
- Вложенные объекты, например, категории или теги, если достаточно ID.
Удалять нужно с осторожностью, чтобы не сломать логику вашего сайта или приложения.
Как программно удалить поля из REST API в WordPress
Самый надежный способ — использовать фильтр rest_prepare_post или аналогичный для своего типа записи. Ниже пример функции, которая удаляет несколько полей из ответа API для записей:
function clearfy_restapi_remove_fields(\WP_REST_Response $response, \WP_Post $post, \WP_REST_Request $request) {
$data = $response->get_data();
// Удаляем поле "author"
unset($data['author']);
// Удаляем поле "featured_media"
unset($data['featured_media']);
// Удаляем поле "comment_status"
unset($data['comment_status']);
// Удаляем поле "ping_status"
unset($data['ping_status']);
// Удаляем поле "meta" (если не нужно)
if (isset($data['meta'])) {
unset($data['meta']);
}
$response->set_data($data);
return $response;
}
add_filter('rest_prepare_post', 'clearfy_restapi_remove_fields', 10, 3);Такой код добавьте в файл functions.php вашей темы или в свой плагин. Он удалит перечисленные поля из всех ответов API по записям.
Удаление полей для произвольных типов записей
Для кастомных типов записей замените rest_prepare_post на rest_prepare_{post_type}, например:
add_filter('rest_prepare_product', 'clearfy_restapi_remove_fields', 10, 3);где product — ваш тип записи.
Удаление полей из пользовательских эндпоинтов и таксономий
Если у вас есть кастомные REST эндпоинты, вы можете использовать аналогичные фильтры rest_prepare_{taxonomy} и rest_prepare_{custom_namespace}_{route} для очистки данных.
Например, чтобы убрать поля из таксономии категорий:
function clearfy_restapi_remove_category_fields($response, $term, $request) {
$data = $response->get_data();
// Удаляем поле description
unset($data['description']);
$response->set_data($data);
return $response;
}
add_filter('rest_prepare_category', 'clearfy_restapi_remove_category_fields', 10, 3);Использование плагина Clearfy Pro для оптимизации REST API
Если вы не хотите писать код, в плагине Clearfy Pro есть раздел для управления REST API, где можно отключать ненужные эндпоинты и поля без кода.
Плюсы использования Clearfy Pro:
- Интуитивный интерфейс для отключения полей.
- Безопасность: легко скрыть чувствительные данные.
- Оптимизация скорости сайта за счет уменьшения данных.
Советы по тестированию и отладке
После удаления полей из REST API обязательно протестируйте работу вашего сайта или приложения:
- Проверьте, что фронтенд корректно загружает данные и не ломается.
- Используйте инструменты разработчика в браузере для проверки ответов API.
- Тестируйте на разных типах записей и страницах.
Если что-то сломалось, верните удаленные поля или уточните, какие из них действительно нужны.
Итого
Оптимизация WP REST API путем удаления неиспользуемых полей — важный шаг к ускорению сайта и повышению безопасности. Используйте фильтры rest_prepare_{post_type} для программного удаления, либо плагин Clearfy Pro для удобного управления. Такой подход уменьшит объем передаваемых данных и сделает ваш сайт более эффективным.