WP is_user_logged_in()无法在集成网站

时间:2016-01-27 22:45:32

标签: php wordpress integration integrate

我正在尝试将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文件中集成和登录功能?

代码非常简单:

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 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)中   第42行/....../wp-includes/functions.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');

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

&#34;域上的每个文件夹&#34;有755和文件644权限。所以它不是&#34;许可&#34;问题。还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

你错过了阻止它加载所有输出的变量:

//Load startup
define('WP_USE_THEMES', false);
require_once( $_SERVER[ "DOCUMENT_ROOT" ] . "/wp-blog-header.php" );