Admin-ajax 在没有 Wordpress 登录的情况下无法工作
Admin-ajax not working without Wordpress login
我在 WordPress 中构建了一个简单的 JSON API,可通过对 /wp-admin/admin-ajax.php 的 GET 请求获得。它所做的只是打印一些常量 JSON 对象。当我登录到 Wordpress 时,它工作正常。但是,注销后出现 400 错误。该问题不是由某些语法错误引起的,也与浏览器缓存无关。此外,“操作”参数已正确定义,因为它在我登录时正在运行。错误的来源可能是什么?
您需要为“nopriv”ajax请求添加一个操作
add_action("wp_ajax_name_of_function", "name_of_function");
add_action("wp_ajax_nopriv_name_of_function", "name_of_function");
**** 更新
在 Wordpress 中使用 AJAX 时,最好利用平台的 wp_create_nonce()
功能来增加一点安全性。使用起来很简单:
- 在 HTML 元素
data-
属性或 JS 变量中将随机数添加到页面
- 在发送到服务器的 AJAX 数据中包含 nonce 值
- 在 PHP 端,检查 nonce 值是否匹配
PHP 代码示例
<body data-nonce="<?= wp_create_nonce("nonce"); ?>">
if(wp_verify_nonce($_POST['nonce'], "nonce")) { echo "We're good"; };
我在 WordPress 中构建了一个简单的 JSON API,可通过对 /wp-admin/admin-ajax.php 的 GET 请求获得。它所做的只是打印一些常量 JSON 对象。当我登录到 Wordpress 时,它工作正常。但是,注销后出现 400 错误。该问题不是由某些语法错误引起的,也与浏览器缓存无关。此外,“操作”参数已正确定义,因为它在我登录时正在运行。错误的来源可能是什么?
您需要为“nopriv”ajax请求添加一个操作
add_action("wp_ajax_name_of_function", "name_of_function");
add_action("wp_ajax_nopriv_name_of_function", "name_of_function");
**** 更新
在 Wordpress 中使用 AJAX 时,最好利用平台的 wp_create_nonce()
功能来增加一点安全性。使用起来很简单:
- 在 HTML 元素
data-
属性或 JS 变量中将随机数添加到页面 - 在发送到服务器的 AJAX 数据中包含 nonce 值
- 在 PHP 端,检查 nonce 值是否匹配
PHP 代码示例
<body data-nonce="<?= wp_create_nonce("nonce"); ?>">
if(wp_verify_nonce($_POST['nonce'], "nonce")) { echo "We're good"; };