WordPress的CI中(Wordpress in CodeIgniter)

2019-06-23 14:53发布

我按照这个指南: http://philpalmieri.com/2009/06/codeigniter-and-wordpress-play-well-together/

基本上说,安装WordPress,得到它的工作,然后替换代码点火器index.php文件,然后在右才开始笨,该文件的底部,需要按字的WP-负载文件。

工作良好。

但是现在,我的$ _SESSION不起作用。 我已经设置代码点火器使用的数据库会话,它记录会话中的值,但它仍然无法正常工作。 我无法登录到我的笨系统管理面板,我不能做更多的事情需要会话,因为会话不工作。 大声笑。

如何解决这一问题?

Answer 1:

我做了以下来得到这个工作(我有一个WordPress的目录中在一个单独的目录中的代码点火器应用程序) -我明明喜欢它,我不得不修改内WordPress的核心文件。

首先,我将我的代码点火器的cookie名称在$ no_unset阵列WP-包括/ load.php对我来说,这是ci_session:

    $no_unset = array( 'GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix','ci_session' );

其次,我想通了,WordPress的的add_magic_quotes函数重整的$ _COOKIE全球。 这是造成笨重新创建每个页面加载的cookie或重定向,从而违反任何连续性。 所以,我评论这一行出WP-includes.load.php(约545行)

//$_COOKIE = add_magic_quotes( $_COOKIE );

接下来,保持此功能在机智所有其他的WordPress相关的cookie,我在$ _COOKIE全球创造了一个array_walk功能循环和应用add_magic_quotes所有的cookies除了中矿WP-包括/ load.php功能

/**
* Applies Magic Quotes to the $_COOKIE global but ignores Codeigniter's Cookie
* @param  string $value Value passed by array_walk function
* @param  string $key   Key passed by array_walk function
*/
function ci_ignore_magic_quotes($value,$key)
{
    if($key != "ci_session")
    {
        stripslashes_deep($value);
    }
}

//Put this line in place of the commented out line above...
array_walk($_COOKIE, 'ci_ignore_magic_quotes');

我这样做,我是保存在我的ci_sessions表不再有多个cookie和session成功地保留下来。

我希望这有帮助!



Answer 2:

这里有一个解释这里的WordPress取消设置如何会话变量,以及可能的解决方案。 不幸的是,似乎需要修改的核心文件-那里似乎没有在任何钩wp_unregister_GLOBALS ,这将有助于。



文章来源: Wordpress in CodeIgniter