WP is_user_logged_in() 在集成站点中不起作用


WP is_user_logged_in() doesn't work in integrated site

我正在尝试将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" );