我有以下问题。我想将Wordpress环境加载到一个外部php文件中。我的所有工作目前都在本地主机上,我的php代码如下:
<?php
require("../../wp-blog-header.php");
$admin = do_shortcode("[su_user field='user_email']");
if ($admin === "admin@email.com") {
// Do stuff here
}
else {
echo "<h1>Forbidden.</h1>";
}
这在我的localhost中运行得很好,所以我认为当我将文件上传到服务器时,它也必须运行,因为文件存储在与本地相同的目录中,因此是../../wp-blog-header.php
。遗憾的是,这不起作用。当I echo $admin;
时,出现以下错误:
用户:用户ID不正确
我试着使用本地Wordpress功能,而不使用这样的快捷代码:
<?php global $user_email;
get_currentuserinfo();
echo $user_email;
?>
这也不起作用。有没有更有效的方法将Wordpress环境加载到外部php文件中?对这里发生的事情有什么建议吗?它不一定是一封电子邮件,也可以是用户id,我尝试过并给了我0。
我忘了提一下,php文件加载,与错误一起返回Forbidden。这让我相信文件require("../../wp-blog-header.php")
实际上正在加载,因为当我更改目录时,我直接得到一个错误,即文件现在正在工作/可用。
我在一个返回登录用户电子邮件地址的新页面中测试了这个短代码,它的工作原理与此相同。
更新
我的根是:
/var/www/vhosts/test-website.com/httpdocs/
我也用require("/var/www/vhosts/test-website.com/httpdocs/wp-blog-header.php")
进行了测试。结果还是一样。奇怪的是,如果我在这行下面添加wp_head()
,就会加载头。我重新表述我的问题:
如何在外部php文件中获取登录用户的当前电子邮件地址
如果您的文件与Wordpress实例是同一文件夹根目录。只需使用以下代码:
<?php
define( 'ROOT_PATH', dirname(__FILE__) );
require(ROOT_PATH . "/wp-blog-header.php");
//你的东西