在发布请求中访问已登录的用户数据?

问题描述:

我有一个wordpress插件中包含的整个网站。我一直试图摆脱WordPress的,但我仍然依靠它来管理用户。我需要访问当前登录用户的数据,特别是他们的ID。在发布请求中访问已登录的用户数据?

当试图访问某些地方的数据我一直得到没有用户对象:

object(WP_User)#1033 (7) { 
    ["data"]=> 
    object(stdClass)#1032 (0) { 
    } 
    ["ID"]=> 
    int(0) 
.... 

最后,它似乎归结为这一点。我想在控制器由我纤细的路由器叫了这样的数据:

$this->get('/assignments', function(Request $req, Response $res, array $args){ 
require_once $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php'; 
    $ch_user = wp_get_current_user(); 
    var_dump($ch_user);die(); 
} 

和:

$this->post('/userdata', function(Request $req, Response $res, array $args){ 
require_once $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php'; 
    $ch_user = wp_get_current_user(); 
    var_dump($ch_user);die(); 
} 

这两种途径都在同一组,彼此分开行。 第一个返回正确填充的用户对象,第二个返回ID为0的空对象。两者之间唯一的区别是一个是获取请求,另一个是发布请求。

我不是新闻专家,我对此完全感到困惑。

编辑:

我发现类似的问题得不到解决:

WordPress Ajax Call -- WordPress User ID

Wordpress REST API Retrurning Currnet User ID as 0

从您的评论我假设在你的WordPress会话当前用户使用标准设置WordPress登录,例如http://aaa.bbb.ccc/wp-login.php

在这种情况下,当前的用户凭据将作为cookie收到。通常的凭证cookie位于$ _COOKIE [LOGGED_IN_COOKIE]中。您可以验证这是相同的两个端点的通过:

var_dump($_COOKIE[LOGGED_IN_COOKIE]) 

一种可能性是,这个cookie没有收到或损坏,则当前用户将被设置为0。

+0

是的,你是对的,登录的cookie在get请求中正确,在post请求中为null。这两个操作在同一个地方以相同的方式完成,我只能认为问题在于纤细。我正在寻找任何与苗条帖子丢弃cookie有关的事情,但我似乎无法找到解决方案:/ – SpeedOfRound

+1

登录的cookie可以直接由服务器删除(过期),或者通过在客户端运行的JavaScript代码间接删除浏览器。您可以检查服务器是否使用浏览器的网络工具直接删除(过期)登录的Cookie,并监控服务器发送的Cookie。服务器将通过过期来删除cookie。在Chrome网络工具上,服务器发送的Cookie称为响应Cookie。 – B68C

+0

如果cookies被删除了,会不会把我注销?该cookie只在请求期间丢失。 – SpeedOfRound