Учебное пособие по WordPress Ajax: обработка запросов wp_ajax_nopriv для пользователей, не вошедших в систему

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

Метод 1: постановка скриптов в очередь в WordPress

// Enqueue the JavaScript file
function wpse_enqueue_scripts() {
    wp_enqueue_script( 'my-ajax-script', get_template_directory_uri() . '/js/my-ajax-script.js', array( 'jquery' ), '1.0', true );
    // Pass the admin-ajax.php URL to the JavaScript file
    wp_localize_script( 'my-ajax-script', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}
add_action( 'wp_enqueue_scripts', 'wpse_enqueue_scripts' );

Метод 2: создание обработчика Ajax в файле function.php

// Ajax Handler for non-logged-in users
function wpse_ajax_handler() {
    // Perform your desired actions here
    $data = $_POST['data'];
    // Return a response
    echo json_encode( array( 'message' => 'Success!', 'data' => $data ) );
    // Important: Stop executing any further code
    wp_die();
}
add_action( 'wp_ajax_nopriv_my_ajax_action', 'wpse_ajax_handler' );

Метод 3. Реализация Ajax-запроса в JavaScript

jQuery(document).ready(function($) {
    // Handler for the Ajax request
    $('#my-button').click(function() {
        var data = {
            action: 'my_ajax_action',
            data: 'Hello, Ajax!'
        };
        $.post(ajax_object.ajax_url, data, function(response) {
            // Process the response
            console.log(response);
        });
    });
});

Это всего лишь несколько примеров того, как вы можете использовать wp_ajax_nopriv в WordPress для обработки запросов Ajax от незарегистрированных пользователей. Не забудьте заменить «my-ajax-action» на желаемое имя действия Ajax, а «my-button» — на идентификатор или класс кнопки, запускающей запрос Ajax.