【发布时间】:2016-05-05 03:01:42
【问题描述】:
我正在尝试将 WP 功能集成到外部 php 文件中。
问题是is_user_logged_in()、is_admin() 等用户和登录的身份验证功能根本不起作用。但是,Post 的功能工作正常。
所以,一定是“Session”问题。
实际上,经过深度搜索,网络上唯一关于该问题的“好”帖子是 WP 支持中的以下旧帖子:https://wordpress.org/support/topic/how-to-integrate-sessionlogin-authentication-to-non-wordpress-pages-w-wp-auth
但是,那个解决方案根本不起作用,如果我启用 root Cookie 插件,我什至无法登录到我的 /wp-blog/
那么,有没有办法在php文件中集成登录功能呢?
代码很简单:
file.php
<?php
//define('WP_USE_THEMES', false);
//include($_SERVER['DOCUMENT_ROOT'].'/wp-blog/wp-load.php');
include($_SERVER['DOCUMENT_ROOT'].'/wp-blog/wp-blog-header.php');
if ( is_user_logged_in() ) {
echo 'logged in.';
} else {
echo 'NOT logged in.';
}
?>
另外,我的错误日志中有以下警告
PHP 警告:session_start():无法发送会话缓存限制器 - 标头已发送(输出开始于 /..../) /....../wp-content/plugins/global-content-blocks/global-content-blocks.php 在第 302 行
编辑:
我像 rnevius 在 cmets 中所说的那样添加了function.php
代码:
include($_SERVER['DOCUMENT_ROOT'].'/wp-blog/wp-blog-header.php');
include($_SERVER['DOCUMENT_ROOT'].'/wp-blog/wp-includes/functions.php');
我有
以下致命警告和致命错误:
PHP 警告:session_start():无法发送会话缓存限制器 - 标头已发送(输出开始于 /..../) /....../wp-content/plugins/global-content-blocks/global-content-blocks.php 在第 302 行
PHP 致命错误:无法重新声明 mysql2date()(之前已声明 在 /...../wp-includes/functions.php:26) 中 /....../wp-includes/functions.php 在第 42 行
编辑:
另外,我已经尝试过以下所有方法:
define('WP_USE_THEMES', false);
//include($_SERVER['DOCUMENT_ROOT'].'/wp-blog/wp-load.php');
include($_SERVER['DOCUMENT_ROOT'].'/wp-blog/wp-blog-header.php');
和
define('WP_USE_THEMES', false);
include($_SERVER['DOCUMENT_ROOT'].'/wp-blog/wp-load.php');
//include($_SERVER['DOCUMENT_ROOT'].'/wp-blog/wp-blog-header.php');
编辑:
这可能有助于思考:
我们有以下结构:
domain.com/test/
domain.com/wp-blog/
domain.com/wp-blog/test/
如果文件file.php 如果在/test/ 中,它不起作用。
domain.com/test/file.php
domain.com/wp-blog/
domain.com/wp-blog/test/
如果文件file.php 在/wp-blog/ 中,它有效!!
domain.com/test/
domain.com/wp-blog/file.php
domain.com/wp-blog/test/
如果文件file.php 在/wp-blog/test/ 中,它有效!!
domain.com/test/
domain.com/wp-blog/
domain.com/wp-blog/test/file.php
“域”上的每个文件夹都有 755 和文件 644 权限。所以这不是“权限”问题。还有其他想法吗?
【问题讨论】:
-
你还没有加载 WordPress 的那部分......所以它不会工作。您应该(相反)创建一个自定义插件,或者将该文件包含在 functions.php 中。此外,FWIW,WordPress 不使用会话。
-
给我秒来包含functions.php
-
@rnevius 包含 functions.php 时出现致命错误。我将错误发布在当前帖子上。
-
@rnevius 从错误中可以看出,由于 wp-blog-header.php,functions.php 已经被“包含”。随便……
-
我认为@rnevius 的意思是您可能采取了错误的方法。您正在做的事情是在非 WordPress 页面中加载 WordPress,这是一种非常糟糕的做法。几乎可以肯定你可以用更好的方式做到这一点,比如使用自定义插件或 functions.php 文件中的一些代码。
标签: php wordpress integration integrate