Потому, что вы не читаете документацию, action в вашем примере левый параметр
Надо или так:
url:myajax.url?action=myfilter
Или так:
data:{ qqq : 123,action: 'myfilter' },
но лучше делать сразу правильно и c security
var $data = {
action: 'myfilter',
qqq :123 ,
security: myajax.security,
}
$.post(myajax.ajaxurl, $data, function ($response) {
if ($response.success) {
console.info('Ответ от сервера', $response);
} else {
// обработка ошибок
}
});
обработчик
add_action( 'wp_ajax_myfilter', 'my_filter_function' );
add_action( 'wp_ajax_nopriv_myfilter', 'my_filter_function' );
function my_filter_function() {
$check = check_ajax_referer( 'special-string', 'security' );
if ( empty( $check ) ) {
$error_code = 1;
}
if ( empty( $_POST[ 'qqq' ] ) ) {
$error_code = 2;
}
if ( ! empty( $error_code ) ) {
wp_send_json_error( [ 'error' => $error_code ] );
}
$str = esc_html( $_POST[ 'qqq' ] );
wp_send_json_success( [ 'str' => $str ] );
}