我正在开发一个基于 Wordpress 的网站,我对这个网站还很陌生。基本上,我们使用插件来跟踪网站上的“积分”,并且我使用调用来获取游戏用户的 WordPress ID。然而,问题是,当我进行 ajax 调用时,它会返回用户 ID 0(也称为未登录),但当我直接访问 PHP 页面时,它会为我提供实际的用户 ID(例如:9)。这是我在 PHP 文件中调用的插件函数:
function cp_currentUser() {
require_once(ABSPATH . WPINC . '/pluggable.php');
global $current_user;
get_currentuserinfo();
return $current_user->ID;
}
这是我的 PHP 文件
<?php
header("Access-Control-Allow-Origin: *");
require_once("wp-load.php");
echo cp_currentUser();
?>
这是我的跨域 AJAX 调用
$.post('http://my.domain.xz/cp_getbalance.php', {}, function(result){
console.log(result);
});
如果您在登录时直接在浏览器中访问上述 URL,它将为您提供用户 ID,但如果我通过 AJAX 调用尝试,无论我以谁身份登录,我都只会得到 0。
从我的角度来看,你的做法是错误的。
您无法从 cookie(客户端)获取有关在服务器(服务器端)上处理的数据片段的信息。
你需要做的是:
一个例子。
您的 PHP 文件:
header("Access-Control-Allow-Origin: *");
require_once("wp-load.php");
echo $_POST['user_id'];
您的跨域 AJAX 调用:
<?php
require "wp-load.php";
global $current_user:
$user_id = $current_user->ID;
?>
var formData = {
'user_id': '<?php echo $user_id; ?>'
};
//console.log(formData);
$.ajax({
url: "http://my.domain.xz/cp_getbalance.php",
type: "post",
data: formData,
success: function(result) {
console.log(result);
}
});
话虽如此,在 Wordpress 中,AJAX 调用是以完全不同的方式完成的,我建议您阅读本指南以更好地理解:https://codex.wordpress.org/AJAX_in_Plugins https://codex.wordpress.org/AJAX_in_Plugins
我希望能被证明有帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)