gpt4 book ai didi

javascript - WordPress Ajax 调用——WordPress 用户 ID

转载 作者:行者123 更新时间:2023-11-30 00:11:55 26 4
gpt4 key购买 nike

我在一个基于 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。

最佳答案

从我的 Angular 来看,你的方法是错误的。

您无法从 cookie(客户端)获取有关它在服务器(服务器端)上处理的一段数据的信息。

你需要做的是:

  • 在 AJAX 中的 POST 调用之前恢复 current_user-> ID

  • 在 POST 中发送检索到的 ID

  • 通过服务器通过 $ _POST 变量检索的数据进行处理。

一个例子。

您的 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

我希望被证明是有帮助的

关于javascript - WordPress Ajax 调用——WordPress 用户 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36144136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com