从外部PHP页面获取当前用户数据

时间:2011-11-06 作者:user159500

我有一个与WordPress上的模板/主题相同级别的PHP页面。我需要能够从该页面获取当前登录的用户详细信息。

我试过这个:

require_once( $_SERVER[\'DOCUMENT_ROOT\'] . \'/wp-load.php\' );

global $current_user;
$current_user = wp_get_current_user();
var_dump( $current_user );
但它什么也没回来。0user_id 其他领域也没有。我错过什么了吗?

UPDATE:

这是var_dump:

object Object]1object(WP_User)#79 (10) {
      ["data"]       => NULL
      ["ID"]         => int(0)
      ["id"]         => int(0)
      ["caps"]       => array(0) {}
      ["cap_key"]    => NULL
      ["roles"]      => array(0) {}
      ["allcaps"]    => array(0) {}
      ["first_name"] => string(0) ""
      ["last_name"]  => string(0) ""
      ["filter"]     => NULL
    }

3 个回复
SO网友:Sagive

你可以。。。

Load the file into the file where you want to display the \'hey username\' message:

<?php include(TEMPLATEPATH .\'/check-user-hello.php\'); ?>

然后在“check user hello.php”文件中,您需要输入以下代码

<?php
if ( is_user_logged_in() ) {
global $current_user;
get_currentuserinfo();
echo \'Hey \' . $current_user->display_name;
} else {
echo \'<a href="\'. get_bloginfo(\'url\') .\'/wp-admin" class="loginlinktop">Login</a>\';
}
?>

希望这有帮助:)

TO learn more about this subject:


FIX 3

据我所知,你需要抓取wp博客标题。php,以便在循环之外运行Wordpress函数。。所以试试这个。

<?php

require(\'../../../wp-blog-header.php\');

if ( is_user_logged_in() ) {
global $current_user;
get_currentuserinfo();
echo \'Hey \' . $current_user->display_name;
} else {
echo \'<a href="\'. get_bloginfo(\'url\') .\'/wp-admin" class="loginlinktop">Login</a>\';
}
?>

Please NOTE:
我在此代码中创建的“wp header blog”路径假定您的文件位于模板目录中。。如果不是,则应更改require的路径,以便正确加载文件。

SO网友:endingwhy

我一直遇到一个问题,直到我意识到我从搜索中找到的代码片段中复制了一些额外的代码。

define( \'SHORTINIT\', true );
当我用“假”代替“真”时,它就像一个符咒。

define( \'SHORTINIT\', false );

SO网友:TARKUS

你好,晚熟的绊脚石(像我一样)。因为我一直在努力解决这个问题,而答案表明需要wp负载。php或wp博客标题。php应该可以工作,如果它们曾经工作过,就不要与以后的版本一起工作,解决方案似乎是加载wp load。然后调用wp\\u head()函数。所以,不用再多说了,

require(\'../../../../../wp-load.php\'); //Obviously my own crude construction of the path the wp-load.php file.
wp_head();

$user = get_user_by(\'ID\',57); //gets user object by ID. Change \'57\' to some valid ID in your own installation.

echo "<pre>";
print_r($user);
echo "</pre>";
。。。鲍勃是你叔叔。

输出:

WP_User Object
(
    [data] => stdClass Object
        (
            [ID] => 57
            [user_login] => unclebob
            [user_pass] => $P$BkVVl8RhOc/niffq1QaNyaMeNwvpoO0
            [user_nicename] => unclebob
            [user_email] => [email protected]
            [user_url] => 
            [user_registered] => 2019-11-29 08:38:45
            [user_activation_key] => 1575016726:$P$BE/a1mnbiD4unzrYG5O0L1T1pJZ5GG.
            [user_status] => 0
            [display_name] => Uncle Bob, PhD
        )

    [ID] => 57
    [caps] => Array
        (
            [admin] => 1
        )

    [cap_key] => wp_capabilities
    [roles] => Array
        (
            [0] => admin
        )

    [allcaps] => Array
        (
            [0] => read
            [admin] => 1
        )

    [filter] => 
    [site_id:WP_User:private] => 1
)

结束

相关推荐

如何从任何位置包含wp-load.php?

我有一个插件,它通过jQuery调用独立的php脚本(myAjax.php)。插件中的ajax()脚本。我需要将以下代码放入myAjax中。php文件:require_once(\'../../../wp-load.php\'); if (!is_user_logged_in()){ die(\"You Must Be Logged In to Access This\"); } if( ! current_user_can(\'edit_files\')