Как добавлять ajax-обработчик в классе?

Через функции ajax добавляется примерно так:

function ajax_handler(){

    echo 'ok';
    exit;
}
add_action('wp_ajax_ajax_handler', 'ajax_handler');
add_action('wp_ajax_nopriv_ajax_handler', 'ajax_handler');

а как добавить этот код внутри класса?
т.е. к какому событию прикреплять, или в конструкторе прикрепить ajax_handler ?
Событие должно срабатывать в админке, кликнув по определённой кнопке.
Обработчик для кнопки сделал через javascript, а как теперь привязать ajax_handler к классу?


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

Автор решения: WP Punk

У callback тип callable подробнее можно почитать тут https://www.php.net/manual/ru/language.types.callable.php.

Пример с объектом:

$krya = new Krya();
add_action('wp_ajax_ajax_handler', [ $krya, 'ajax_handler'] );
add_action('wp_ajax_nopriv_ajax_handler', [ $krya, 'ajax_handler' ] );

class Krya {

   public function ajax_callback() {
       echo 'ok';
    exit;
   }

}

Пример со статическим методом:

add_action('wp_ajax_ajax_handler', [ 'Krya', 'ajax_handler'] );
add_action('wp_ajax_nopriv_ajax_handler', [ 'Krya', 'ajax_handler' ] );

class Krya {

   public static function ajax_callback() {
       echo 'ok';
       exit;
   }

}
→ Ссылка