首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WordPress Ajax调用-- WordPress用户ID

WordPress Ajax调用-- WordPress用户ID
EN

Stack Overflow用户
提问于 2016-03-22 08:25:45
回答 4查看 2K关注 0票数 3

我在一个基于Wordpress的网站上工作,这是我的新手。基本上,我们使用一个插件来跟踪网站上的“点数”,我使用一个调用来获取游戏的用户wordpress ID。然而,问题是,当我调用ajax时,它返回0(也就是没有登录)作为用户ID,但是当我直接访问PHP页面时,它会给出实际的用户ID (例如: 9)。下面是我在PHP文件中调用的插件函数:

代码语言:javascript
复制
function cp_currentUser() {

require_once(ABSPATH . WPINC . '/pluggable.php');
global $current_user;
get_currentuserinfo();
return $current_user->ID;

}

下面是我的PHP文件

代码语言:javascript
复制
<?php

header("Access-Control-Allow-Origin: *");

require_once("wp-load.php");

echo cp_currentUser();

?>

下面是我的跨域AJAX调用

代码语言:javascript
复制
$.post('http://my.domain.xz/cp_getbalance.php', {}, function(result){

console.log(result);

});

如果您在登录时直接在浏览器中转到上面的URL,它会给出用户id,但如果我尝试从AJAX调用中执行此操作,则无论我是以谁的身份登录,都只能得到0。

EN

回答 4

Stack Overflow用户

发布于 2019-09-24 18:35:56

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

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

您需要做的是:

  • 在AJAX中的POST调用之前恢复当前_user-> ID
  • 在POST中发送检索到的ID
  • 通过服务器处理通过$ _POST变量检索到的数据。

举个例子。

您的PHP文件:

代码语言:javascript
复制
header("Access-Control-Allow-Origin: *");

require_once("wp-load.php");

echo $_POST['user_id'];

您的跨域AJAX调用:

代码语言:javascript
复制
<?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

我希望被证明是有帮助的

票数 1
EN

Stack Overflow用户

发布于 2016-03-22 13:14:21

试试这个:wp_get_current_user()

代码语言:javascript
复制
require_once("wp-load.php");  //Please confirm your wp-load path
$current_user = wp_get_current_user();
echo $current_user->ID;
exit;
票数 0
EN

Stack Overflow用户

发布于 2019-09-24 15:04:49

您可能应该始终使用wp_die(),无论是否在Ajax回调中。更棒的是,可以使用wp_send_json() options发回信息。

代码语言:javascript
复制
require_once("wp-load.php");  //Please confirm your wp-load path
$current_user = wp_get_current_user();
echo $current_user->ID;
 wp_die(); // this is required to terminate immediately and return a proper response
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36144136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档