WP_GET_CURRENT_USER始终返回0

时间:2011-10-02 作者:IsaacS

我是wordpress的新手,正在修改网站上已经存在的代码。我想获取用户的ID,但我还不知道如何获取。以下示例代码适用于我的本地环境,但它仅在生产站点上为用户ID返回0。任何想法都将不胜感激。

<?php
$docroot = "/home/production-site/www";
require_once $docroot . \'/wp-includes/pluggable.php\';

testGetUserid();

function testGetUserid(){
    echo \'Before wp_get_current_user <br />\';
    $user = wp_get_current_user();
    echo \'After wp_get_current_user <br />\';
    echo \'ID= \' . $user->ID . \'<br />\';
}
?>
顺便说一句,虽然我不知道这是否相关,但对我来说,似乎有些奇怪的事情可能正在发生wp-includes/pluggable.php, 所以我上传了整个php文件here 让每个人都可以查看该文件。有了这个文件,我不得不require_once 我的本地环境上的以下文件。

require_once \'capabilities.php\';
require_once \'functions.php\';
require_once \'load.php\';
require_once \'plugin.php\';
require_once \'user.php\';
Env生产站点:WordPress 3.2.1版,其他未知(使用sakura.ne.jp托管服务)

Env local:Ubuntu 11.04、Apache/2.2.17、PHP 5.3.5-1ubuntu7。2带Suhosin补丁(cli)(构建时间:2011年5月2日23:00:17),WordPress版本3.2.1

(2012年6月10日更新)除了大家的建议之外,@shabushabu(多好的名字:)我是日本人)指出了最后一个关键因素-init 钩以下是对我有效的方法:

require( dirname(__FILE__) . \'/../wp-load.php\' ); // Path depends on your file structure, needless to say
 :
do_action( \'login_init\' );
 :  // Whatever you want to do

3 个回复
最合适的回答,由SO网友:shabushabu 整理而成

wp_get_current_user() 实际上只是一个包装$current_userget_currentuserinfo(), 所以你可以两者都用。不过,重要的是,只能在init 钩之前调用它只会返回0,正如您所经历的那样。

SO网友:Mamaduka

仅使用$current_user 全局,您的函数如下所示:

function mamaduka_get_user_id() {
    global $current_user;

    echo \'Before wp_get_current_user <br />\';
    echo \'After wp_get_current_user <br />\';
    echo \'ID= \' . $current_user->ID . \'<br />\';
}

SO网友:Rutwick Gangurde

使用global $current_user, 之后是get_currentuserinfo(). $current_user 保存当前登录用户的信息。您还可以使用current_user_can() 检查当前用户的角色。删除所有这些包含,它们不是必需的!

结束

相关推荐