Решение ошибки WP Admin admin-ajax.php 403 Forbidden в WordPress

Ошибка 403 Forbidden при обращении к файлу admin-ajax.php в WordPress — частая проблема, которая может серьёзно нарушить работу сайта. Этот файл отвечает за AJAX-запросы в административной части и фронтенде, обеспечивая взаимодействие плагинов и тем с сервером без перезагрузки страницы. В этой статье подробно разберём причины возникновения ошибки 403 на wp-admin/admin-ajax.php и приведём практические способы её устранения.

Что означает ошибка 403 Forbidden на admin-ajax.php и почему она возникает

Код ошибки 403 Forbidden говорит о том, что сервер понимает запрос, но отказывается его выполнять из-за недостатка прав доступа. В контексте admin-ajax.php это может быть вызвано:

  • Правилами безопасности на сервере (например, .htaccess или ModSecurity);
  • Блокировками со стороны плагинов безопасности или файрволов (Wordfence, Sucuri и др.);
  • Неверными правами файлов и папок на сервере;
  • Конфликтами с другими плагинами или темами, которые изменяют обработку AJAX-запросов;
  • Ограничениями хостинг-провайдера, например, на количество запросов или IP-фильтрацию.

Нарушение доступа к admin-ajax.php приводит к сбоям в работе функционала, который зависит от AJAX: обновление корзины, автосохранение, динамическая загрузка контента, а также функционал многих плагинов.

Проверка и исправление прав доступа к файлу admin-ajax.php

Первым делом стоит проверить права доступа к файлу admin-ajax.php. Он находится в папке wp-admin. Стандартные права — 644 для файлов и 755 для папок.

Для проверки и исправления можно использовать SSH или FTP:

chmod 644 wp-admin/admin-ajax.php
chmod 755 wp-admin

Если права установлены некорректно, сервер может блокировать доступ, вызывая ошибку 403.

Также убедитесь, что пользователь, под которым работает веб-сервер (например, www-data или apache), имеет доступ к этим файлам.

Проверка правил в .htaccess и настройках ModSecurity

Файл .htaccess может содержать правила, которые блокируют доступ к admin-ajax.php. Особенно это вероятно, если в нём прописаны ограничения по IP или User-Agent.

Пример потенциально блокирующего правила:

<Files admin-ajax.php>
    Order deny,allow
    Deny from all
</Files>

Если такое правило есть, его нужно либо удалить, либо изменить, чтобы разрешить доступ.

Многие хостинги используют ModSecurity — модуль веб-файрвола. Иногда он ошибочно блокирует AJAX-запросы. Чтобы проверить, отключите ModSecurity на время или обратитесь в техподдержку хостинга с запросом проверить логи и снять блокировку.

Отключение и проверка плагинов безопасности и кеширования

Плагины безопасности, такие как Wordfence, iThemes Security или All In One WP Security, могут блокировать AJAX-запросы, если считают их подозрительными.

Для диагностики:

  1. Временно отключите все плагины безопасности;
  2. Проверьте, исчезла ли ошибка 403 на admin-ajax.php;
  3. Если ошибка пропала, включайте плагины по одному, чтобы выявить виновника;
  4. В настройках плагина найдите раздел, связанный с блокировкой AJAX или файловой защитой, и добавьте admin-ajax.php в белый список.

Аналогично стоит проверить плагины кеширования (например, W3 Total Cache, WP Super Cache), которые иногда не корректно обрабатывают AJAX-запросы.

Пример кода для отладки и обхода ошибки admin-ajax.php 403

Если вы разработчик и хотите отлаживать AJAX-запросы, можно добавить в functions.php вашей темы следующий код для проверки доступа:

function wperror_check_admin_ajax_access() {
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_die( 'Доступ запрещён', '', array( 'response' => 403 ) );
    }
}
add_action( 'admin_init', 'wperror_check_admin_ajax_access' );

Этот код ограничит доступ к административным AJAX-запросам только администраторам. Если ошибка исчезает после его временного отключения, значит проблема в правах доступа.

Использование плагина Clearfy Pro для решения ошибок безопасности

Плагин Clearfy Pro поможет оптимизировать безопасность и снизить вероятность блокировки AJAX-запросов. В Clearfy есть функции для:

  • Отключения лишних REST API-эндпоинтов;
  • Управления правами доступа;
  • Защиты от брутфорс-атак;
  • Добавления исключений для admin-ajax.php в файрволе.

Clearfy Pro позволяет настроить сайт без глубоких знаний серверных настроек, что особенно полезно для небольших сайтов на общем хостинге.

Проверка и исправление заголовков CORS и nonce в AJAX-запросах

В AJAX-запросах WordPress часто используется nonce (число, используемое один раз) для безопасности. Если nonce не передаётся или передаётся некорректно, сервер может вернуть 403.

Пример правильного использования nonce в JavaScript:

jQuery.post(
    ajaxurl,
    {
        action: 'wperror_my_action',
        _ajax_nonce: wperror_ajax_object.nonce,
        data: myData
    },
    function(response) {
        console.log(response);
    }
);

И в PHP необходимо проверить nonce:

function wperror_my_action_callback() {
    check_ajax_referer( 'wperror_nonce_action', '_ajax_nonce' );
    // Обработка запроса
    wp_send_json_success( 'Данные обработаны' );
}
add_action( 'wp_ajax_wperror_my_action', 'wperror_my_action_callback' );

Если nonce отсутствует или не совпадает, WordPress вернёт ошибку 403. Проверьте, что nonce передаётся корректно и совпадает с тем, что сгенерирован в PHP.

Заключение: комплексный подход к решению ошибки 403 на admin-ajax.php

Ошибку 403 Forbidden на wp-admin/admin-ajax.php нельзя решить универсально одним способом. Она требует поэтапной диагностики:

  1. Проверка прав доступа к файлам и папкам;
  2. Анализ правил .htaccess и конфигурации ModSecurity;
  3. Отключение и проверка плагинов безопасности и кеширования;
  4. Правильное использование nonce и AJAX-запросов в коде;
  5. Обращение в поддержку хостинга при необходимости.

Использование плагинов, таких как Clearfy Pro, поможет автоматизировать часть проверок и настроек и защитить сайт от подобных ошибок в будущем.

Решение ошибки 404 на страницах WordPress
12.12.2025
Решение ошибки 429 Too Many Requests в WordPress
08.12.2025
WooCommerce: как исправить проблему с автоматическим удалением товаров из корзины
05.06.2026
Решение ошибки Post Content Length в WordPress
13.01.2026
Как исправить проблему с неработающим WooCommerce Cart AJAX на сайте WordPress
28.05.2026