我正在尝试将WP函数集成到外部php文件中。
问题是用户和登录人的身份验证功能,如is_user_logged_in()
、is_admin()
等根本不起作用。但是,Post的功能工作正常。因此,它必须是一个"会话"问题。
实际上,经过深入的搜索,网络上关于该问题的唯一"好"帖子是WP支持中的以下旧帖子:https://wordpress.org/support/topic/how-to-integrate-sessionlogin-authentication-to-non-wordpress-pages-w-wp-auth
但是,该解决方案根本不起作用,如果我启用root Cookie
插件,我什至无法登录我的/wp-blog/
那么,有没有知道如何在php文件中集成和登录功能?
代码非常简单:
文件.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行
编辑:
我添加了function.php
,正如 rnevius 在评论中所说
法典:
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-include/functions.php:26) in /....../wp-include/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 个权限。所以这不是"许可"问题。还有其他想法吗?
您缺少阻止它加载所有输出的变量:
//Load startup
define('WP_USE_THEMES', false);
require_once( $_SERVER[ "DOCUMENT_ROOT" ] . "/wp-blog-header.php" );