web-dev-qa-db-ja.com

外部のPHPスクリプトからwp-load.phpを読み込まないようにするにはどうすればいいですか?

私はワードプレスで スリム を使用します。これは今までのところ完璧に機能しました。よくほとんど。マルチサイトに移行したら、ドメイン名を偽装した$_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.phpを使用せずにすべてのワードプレス機能にアクセスすることは可能ですか?

私が直面している問題は、wp-load.phpがどういうわけかレスポンスオブジェクトを変更することで、それをフラッシュできなくなったことです(リンクノートを参照:私は問題の解決策を見つけたと思います。 wp-load.phpの代わりにwordpress関数を使うより正しい方法?)

1
Toskan

ほとんどの場合、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');
1
majick