从WordPress外部获取用户信息

时间:2012-03-09 作者:Sapan Diwakar

不太清楚为什么会这样,希望有人能帮忙。我有一个wordpress安装,假设为了参数起见,它安装到http://www.example.com/wordpress. 我有一个名为test的文件。php,代码如下:

<?php 
    include \'/php_path_to_blog/wp-blog-header.php\';
    echo get_current_user_id();
?>
现在奇怪的是,如果我有一个用户登录并将此文件放在我的wordpress目录中,然后通过访问http://www.example.com/wordpress/test.php 它输出当前登录用户的正确用户id。但是,如果我将文件移动到站点的根目录,并通过转到http://www.example.com/test.php, 它输出0,就好像没有用户登录一样。

似乎有些功能在安装目录之外正常工作,有些则不能。我希望它们在wordpress iSNtalation目录之外工作。

任何帮助都将不胜感激。

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

与几个小时前的这个问题非常相似:How can I get a list of latest posts outside of my WP install?

使用chdir() 在包含甚至调用任何与WordPress相关的内容之前,先进入WordPress根目录。在这些情况下,使用了相对目录和文件引用,从而破坏了许多东西。

通过存储get_cwd() 第一

$cwd = get_cwd();
chdir( \'wordpress_root\' );
include \'wp-load.php\';
// ... do stuff with WordPress
chdir( $cwd );
// ... continue happily ever after
此外,看到您正在使用会话cookie,这些cookie的路径对于您使用的URI无效。浏览器不会发送您之前获取的WordPress身份验证Cookie,因为域根无效且超出WordPress范围。您需要使用以下内容更改WordPress中这些cookie的根http://wordpress.org/extend/plugins/root-cookie/.

结束