Отклонять все AJAX запросы, кроме... (WordPress)

Дoбрый дeнь. Возникла необходимость отклонять все AJAX запросы к admin-ajax.php, если они исходят не от администратора или формы обратной связи. Данный код работает, но возник вопрос - может ли WordPress самостоятельно инициировать обращения к admin-ajax.php (как он это делает с wp-cron.php)? Если да, то каким образом можно внести его в исключения?

add_action('admin_init', 'my_ajax_checker', 10, 2);

function my_ajax_checker() {

  // Делаем исключение для формы обратной связи
  $send_form = $_POST['action'] === 'elementor_pro_forms_send_form';

  // Отклонять все AJAX запросы, кроме администратора и формы обратной связи
  if( defined('DOING_AJAX') && DOING_AJAX && !current_user_can('manage_options') && !$send_form) {
    $response = array( 'message' => 'Error', 'data' => array (), );
    wp_send_json_error( $response );
    }
}

Ответы (1 шт):

Автор решения: KAGG Design

Не посмотрев тольком код в вопросе и памятую проблему в предыдущем, я написал такой код:

/**
 * Whitelist ajax calls.
 *
 * @param string $tag    The name of the action to be executed.
 * @param mixed  ...$arg Optional. Additional arguments which are passed on to the
 *                       functions hooked to the action. Default empty.
 */
function whitelist_ajax( $tag, ...$arg ) {
    if ( 0 !== strpos( $tag, 'wp_ajax_' ) ) {
        return;
    }

    $whitelist = [
        'elementor_pro_forms_send_form',
    ];

    $action = preg_replace( '/(?:wp_ajax_|wp_ajax_nopriv_)(.+)/', '$1', $tag );
    if ( in_array( $action, $whitelist, true ) ) {
        return;
    }

    $response = new WP_Error( '', 'Ajax request blocked' );

    wp_send_json_error( $response );
}

add_action( 'all', 'whitelist_ajax' );

Он протестирован и работает.

Но по сути, ваш код и код в ответе практически идентичны по функционалу за тем исключением, что мой код срабатывает позднее и позволяет WordPress ответить 400, если действие (action) не зарегистрировано.

→ Ссылка