如何避免从外部php脚本加载wp-load.php?

时间:2016-06-20 作者:Toskan

我使用slim 使用wordpress。到目前为止,这一切都完美无缺。差不多了。一旦我改为多站点,我就不得不开始伪造$_SERVER 伪造域名的变量。但最终还是成功了。

我必须使用的是:

  global $_SERVER;
  $_SERVER[\'HTTP_HOST\'] = \'www.mydomain.com\';
  $_SERVER[\'REQUEST_URI\'] = \'/\';
  require_once(  __DIR__ .\'/../../../wp-load.php\' );
它感觉错误且非常笨拙,但不使用它会导致错误,请参见此处(或者这也算是交叉柱吗?):

https://stackoverflow.com/questions/37755976/wordpress-multisite-breaks-including-require-of-wp-load-php

但现在我遇到了以下问题:

https://stackoverflow.com/questions/37912920/wp-load-php-disabling-the-ob-flush-to-work-correctly

现在是否有可能在不使用wp load的情况下访问所有wordpress函数。php?

我面临的问题是wp负载。php以某种方式改变了响应对象,使我无法再刷新它(请参阅链接注释:我想我找到了问题的解决方案。我的问题仍然是:有没有更正确的方法来使用wordpress函数而不是wp-load.php?)

1 个回复
SO网友:majick

差不多吧wp-load.php 是唯一的出路。我认为没有其他方法可以安全地加载WordPress函数。。。

您可以通过从任何需要路径的文件中递归地包含它来解释路径变化。。。例如:。

function file_find_require($file,$folder=null) {
    if ($folder === null) {$folder = dirname(__FILE__);}
    $path = $folder.DIRECTORY_SEPARATOR.$file;
    if (file_exists($path)) {require($path); return $folder;}
    else {
        $upfolder = file_find_require($file,dirname($folder));
        if ($upfolder != \'\') {return $upfolder;}
    }
}

$rootpath = file_find_require(\'wp-load.php\');