📜  wp_ajax_nopriv 工作 (1)

📅  最后修改于: 2023-12-03 15:21:15.399000             🧑  作者: Mango

使用 wp_ajax_nopriv 函数实现 Ajax 请求

wp_ajax_nopriv 是一个 WordPress 提供的 Ajax 请求的函数,主要用于无需登录的情况下发起异步请求。

使用步骤
  1. 在 WordPress 的 functions.php 文件中添加以下代码:
add_action( 'wp_ajax_nopriv_your_action', 'your_function' );
add_action( 'wp_ajax_your_action', 'your_function' );

function your_function() {
    // 这里写处理 Ajax 请求的代码
}

其中,wp_ajax_nopriv_your_action 用于无需登录的情况下调用函数,而 wp_ajax_your_action 则是需要登录后才能调用的函数。

  1. 在 JavaScript 代码中发起 Ajax 请求:
jQuery.ajax({
    type: 'POST',
    url: ajaxurl,
    data: {
        action: 'your_action', // 对应上面的函数名称
        some_data: 'some_value' // 请求需要传递的数据
    },
    success: function(response) {
        console.log(response); // 处理响应数据
    },
    error: function(xhr, status, error) {
        console.log(xhr.responseText); // 处理错误信息
    }
});

需要注意的是,JavaScript 代码需要用到 ajaxurl 变量,它是 WordPress 自带的 Ajax 请求 URL。

示例代码

以下是一个简单的示例,展示如何使用 wp_ajax_nopriv 实现 Ajax 请求:

PHP 代码:
add_action( 'wp_ajax_nopriv_hello_world', 'hello_world' );
add_action( 'wp_ajax_hello_world', 'hello_world' );

function hello_world() {
    echo 'Hello World';
    wp_die();
}
JavaScript 代码:
jQuery(document).ready(function($) {
    $('#my_button').click(function() {
        jQuery.ajax({
            type: 'POST',
            url: ajaxurl,
            data: {
                action: 'hello_world'
            },
            success: function(response) {
                $('#my_div').html(response);
            },
            error: function(xhr, status, error) {
                alert(xhr.responseText);
            }
        });
    });
});
HTML 代码:
<button id="my_button">Click Me</button>
<div id="my_div"></div>
总结

通过 wp_ajax_nopriv 函数,我们可以轻松地实现 WordPress 中的 Ajax 请求。在使用过程中,需要注意传递的数据格式以及请求方法等细节,才能顺利地获取到需要的数据。