Диагностика проблемы: зачем отключать автосохранение через REST API
WordPress по умолчанию использует REST API для функции автосохранения (autosave) при редактировании записей, что помогает избежать потери контента. Однако в ряде случаев, например, при высоких нагрузках или кастомных интерфейсах, частые запросы автосохранения вызывают перегрузку сервера и конфликты с плагинами безопасности. Важно отключить автосохранение именно через REST API, не затрагивая обычный механизм автосохранения по AJAX и не снижая безопасность сайта.
Как проверить активность автосохранения через REST API
Откройте консоль браузера (F12) на странице редактирования записи и перейдите во вкладку Network (Сеть). Отфильтруйте запросы по адресу /wp-json/wp/v2/posts/{ID}/autosaves. Если вы видите частые POST-запросы в этом урле, значит автосохранение через REST API активно.
Пошаговое решение: отключаем автосохранение через REST API
1. Запретить REST API автосохранения с помощью фильтра
Добавьте следующий код в functions.php вашей темы или в отдельный плагин. Он отключит обработку автосохранения через REST API, сохранив стандартное поведение WordPress:
add_filter('rest_allow_anonymous_autosaves', '__return_false');Этот фильтр предотвращает разрешение анонимных автосохранений, но если нужно полностью отключить автосохранение через REST API для авторизованных пользователей, можно дополнительно заблокировать маршрут:
add_filter('rest_endpoints', function($endpoints) {
if (isset($endpoints['/wp/v2/posts/(?P<id>[\d]+)/autosaves'])) {
unset($endpoints['/wp/v2/posts/(?P<id>[\d]+)/autosaves']);
}
return $endpoints;
});2. Проверка и тестирование изменений
- Очистите кэш сайта и браузера.
- Перезагрузите страницу редактирования записи.
- В консоли браузера в Network убедитесь, что запросы к
/wp-json/wp/v2/posts/{ID}/autosavesотсутствуют. - Попробуйте принудительно сохранить запись через кнопку «Обновить» — обычное сохранение должно работать без ошибок.
Частые ошибки и их исправление
Ошибка 1: Автосохранение вообще не работает
Причина: полностью отключён весь механизм автосохранения, включая AJAX-запросы.
Решение: убедитесь, что не отключён хук wp_autosave и что вы не блокируете AJAX-запросы на admin-ajax.php.
Ошибка 2: REST API автосохранение продолжает отправлять запросы
Причина: кэш плагинов или браузера не обновились, либо не сработал фильтр rest_endpoints.
Решение: очистите серверный и браузерный кэш, проверьте правильность добавления кода (функция должна возвращать изменённый массив).
Ошибка 3: Проблемы с плагинами безопасности после отключения REST автосохранения
Причина: некоторые плагины рассчитывают на REST вызовы для автосохранения и логики блокировки.
Решение: протестируйте плагины безопасности, обновите их до последних версий или настройте исключения для REST маршрутов.
Практические советы по безопасности и производительности
- Не отключайте автосохранение полностью — оно защищает от потери данных.
- Отключайте только REST API автосохранение, если оно вызывает проблемы.
- Регулярно обновляйте WordPress, темы и плагины для совместимости с REST API.
- Используйте Clearfy Pro (https://wpshop.ru/plugins/clearfy?utm_source=wpfactory.ru&utm_medium=article&utm_campaign=kak-otklyuchit-avtomaticheskoe-sohranenie-v-wp-rest-api-bez-poteri-bezopasnosti) для оптимизации REST вызовов и безопасности сайта.
Сравнение методов отключения автосохранения REST API
| Метод | Описание | Плюсы | Минусы |
|---|---|---|---|
Фильтр rest_allow_anonymous_autosaves | Запрет анонимных автосохранений через REST API | Простая реализация, сохраняет безопасность | Не отключает автосохранение для авторизованных пользователей |
| Удаление эндпоинта REST API | Полное отключение маршрута автосохранения | Полное отключение REST автосохранения | Может вызвать конфликты с плагинами, требует тестирования |
| Отключение AJAX автосохранения | Полное отключение автосохранения (не рекомендуется) | Устраняет все запросы автосохранения | Риск потери данных, снижение UX |