Отключить admin-ajax?

15 мар. 2018 г., 00:55:00
Просмотры: 15.7K
Голосов: 7

Можно ли просто отключить/остановить выполнение admin-ajax.php?

Проверял документацию WordPress. Искал в Google. Искал на этом форуме. Не нашел ответа.

Также пробовал это, но не работает:

function stop_ajax()
{
    // Отключаем AJAX
    define( 'DOING_AJAX', false );
}
add_action( 'admin_init', 'stop_ajax' );
2
Комментарии

Что вы имеете в виду под "отключить/остановить admin-ajax.pl от выполнения"? Что следует делать, если такой запрос отправлен, а он отключен?

Krzysiek Dróżdż Krzysiek Dróżdż
15 мар. 2018 г. 01:04:51

Не совсем понятно, имеете ли вы в виду WordPress Heartbeat, но в этом случае в интернете есть хорошие руководства, объясняющие как отключить или, что лучше, как ограничить его. Вот хорошая отправная точка: https://www.siteground.com/tutorials/wordpress/limit-heartbeat/

Alex Sancho Alex Sancho
15 мар. 2018 г. 01:07:28
Все ответы на вопрос 1
0

Первое, что делает admin-ajax.php, — это определяет константу DOING_AJAX. Затем он загружает wp-load.php. После выполнения других действий первое, что попадает под ваш контроль, — это файл wp-config.php.

Таким образом, если вы хотите остановить все AJAX-запросы, вы можете добавить следующий код в файл wp-config.php:

if( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
  wp_die( '0', 400 );
}

Если у вас нет доступа к файлу wp-config или вы хотите реализовать это через плагин, это тоже возможно. Нет необходимости добавлять код на хук, так как если запрос является AJAX-запросом, константа уже определена.

/**
 * Plugin Name: Stop Ajax
 */
if( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
  wp_die( '0', 400 );
}

Будьте осторожны: это может вызвать побочные эффекты, если вы используете плагины или темы, требующие AJAX.

15 мар. 2018 г. 02:28:39