WordPress REST API против admin-ajax.php
Мы всё ещё встречаем вновь написанный код от разработчиков WordPress, которые используют admin-ajax.php для AJAX-запросов.
WordPress REST API была выпущен почти десять лет назад и он быстрее, безопаснее и значительно проще в использовании.
Проблемы с admin-ajax.php
admin-ajax.php — это устаревшая система, которая предшествует REST API. Хотя она всё ещё работает, она имеет недостатки:
- Производительность: Она загружает всю среду администратора WordPress при каждом запросе, даже если вам это не нужно
- Отсутствие поддержки HTTP-глаголов: Всё проходит через
POST, что делаетendpointsменее семантичными - Ограниченная структура: Действия — это просто строки без встроенной маршрутизации или валидации параметров.
По результатам тестирования производительности от Delicious Brains, эндпоинты REST API могут быть значительно быстрее, чем admin-ajax.php, потому что они обходят ненужные накладные расходы админки.
Использование REST API
Вот полный пример, показывающий, насколько чистым может быть код REST API:
PHP:
register_rest_route( 'app/v1', '/endpoint', [
'methods' => 'GET',
'callback' => 'callbackFunction',
'permission_callback' => fn () => current_user_can('manage_options'),
] );
public function callbackFunction() {
return [ 'status' => 'ok', 'message' => 'It works!' ];
}
JavaScript:
fetch('/wp-json/app/v1/endpoint', {
method: 'GET',
})
.then(response => response.json())
.then(data => {
console.log('Success:', data);
})
.catch(error => {
console.error('Error:', error);
});
Почему REST API лучше
- Встроенная безопасность:
permission_callbackявляется обязательным, что заставляет вас думать о безопасности с самого начала - Истинный RESTful-дизайн: Используйте правильные HTTP-методы (
GET,POST,PUT,DELETE), которые соответствуют вашему намерению, и ваш API становится самодокументируемым - Лучшая производительность: Отсутствие накладных расходов администратора означает более быстрые ответы и меньшую нагрузку на сервер
- Современные стандарты: REST API — это отраслевой стандарт, что делает ваш код более знакомым разработчикам и облегчает интеграцию с внешними инструментами
- Автоматическое обнаружение: WordPress автоматически документирует ваши endpoints на
/wp-json/, что упрощает тестирование и интеграцию
Когда использовать каждый из них
REST API: Всегда. Новые проекты, новые функции, любая AJAX-функциональность.
admin-ajax.php: Только при поддержке устаревшего кода, где рефакторинг не оправдан.
Переход на новый способ
WordPress REST API входит в состав ядра с версии 4.7 (выпущена в 2016 году). Нет причин продолжать разработку с использованием admin-ajax.php. REST API быстрее, безопаснее и соответствует современным веб-стандартам.
Для подробного руководства по использованию REST API ознакомьтесь с официальным туториалом WordPress.
Относитесь к admin-ajax.php так же, как вы относитесь к jQuery в современном мире: устаревший код, который не должен появляться в новых проектах.

