Wordpress環境に依存する外部スクリプトでクラスを作成しました。これはさまざまなプロジェクトで使用する予定のクラスなので、wp-blog-header.phpへのパスを動的に作成することにしました。これが私が思いついたものです。それは現在私のために働きます、しかし私はその絶対確実性を確実にする必要があります。
$docRoot = $_SERVER['DOCUMENT_ROOT'];
$scriptName = $_SERVER['SCRIPT_NAME'];
$queryArray = explode("/", $scriptName);
$queryLength = count($queryArray);
require_once($docRoot . ($queryLength > 2 ? "/".$queryArray[$queryLength - 2] : "" ) . '/wp-blog-header.php');
スクリプトの場所やWPインストールの設定に関係なく、誰かがより良い解決策を持っていますか、またはこれで十分に信頼できますか?
一般的なケースでは、公的にアクセス可能なすべてのファイルとフォルダをチェックし、それからすべての親フォルダをチェックする以外にパフォーマンスのよい解決策はありません。
これはすべてのページの読み込みや要求に対して実行できる実行可能または排除可能な操作ではないため、他に2つのオプションがあります。
後者は、自動化したい場合に頼りになるものです。
あなたのコードで私が見る問題:
これらの仮定に問題がなければ、はい、あなたのコードは安全に使用できます。
ただし、外部スクリプトをプラグインとしてWordPressにロールインすることをお勧めします。
コーデックスに従って、
http://codex.wordpress.org/Integrated_WordPress_with_Your_Website
<?php
require('/the/path/to/your/wp-blog-header.php');
?>
あなたの手段と方法が確実であるかどうかは、あなたのセットアップとあなたがあなたのスクリプトを置いている場所に、あなたのWordPressインストールとの関係で完全に依存しています。
あなたがあなたのコードで概説された規約に従うと仮定すると、あなたは大丈夫なはずです。
WordPressの場所と対比して、スクリプトの場所(考えられるバリエーションも含む)のより詳細な例を提供する必要があります。場合。
(あなたのコメントに応えて)
あなたのWordPressインストールへのパスは一定です、それで、そのパスがどこにあるかを理解するためにいくらかのトリックを工夫する代わりに、上の例のようにそのままそして完全にそれを述べてください。
たとえば、実際のパス(localhostの場合)が次のようになっているとします。
c:\Apache\htdcos\wordpress
…そして、
//document root being c:\Apache\htdocs
$_SERVER["DOCUMENT_ROOT"] . '/wordpress/wp-blog-header.php';
あなたのドキュメントルートを探します。そのために、インストールディレクトリとwp-blog-header.php
ファイルを指定します。
それから私は.htaccess
ファイルをc:\Apache\htdocs
に置くでしょう。
php_value auto_prepend_file "auto_inc.php" //the auto_inc.php can be a name of choice
これは、他のPHPファイルの前にauto_inc.php
ファイルが(auto_prepend)含まれるようになります。
..\htdocs\ (root)
..\htdocs\project1\
..\htdocs\project2\
..\htdocs\project-test\sample\
..\htdocs\wordpress\
..\htdocs\.htaccess
..\htdocs\auto_inc.php
..\htdocs\index.php
auto_inc.php
ファイルは、深さに関係なく、任意のサブディレクトリに含まれます。
この自動的にインクルードされたファイル内に、さまざまなプロジェクト内で任意に使用できるrequire('/the/path/to/your/wp-blog-header.php');
をラップする関数を配置できます。
function wp_function_include() {
$path = require('/the/path/to/your/wp-blog-header.php');
echo $path;
}
wp_functions_include(); //which fires the verbose require(path..wp-blog-header.php)
あるいは、require
をまったくラップする必要はなく、すべてのファイル、サブディレクトリ、深さを問わずに使用できるようにしておく必要がないため、プロジェクトに集中できます。
/wordpress/
ディレクトリはすでにそれ自身の.htaccess
を持っているので、それはそのルートディレクトリ内にある.htaccess
の影響を受けず、2回宣言する関数間の衝突を取り除きます。
wp-blog-header.php
の実際のパスを取得するには、以下のコードを適用するだけです。
$scriptPath = dirname(__FILE__);
$path = realpath($scriptPath . '/./');
$filepath = split("wp-content", $path);
// print_r($filepath);
define('WP_USE_THEMES', false);
require(''.$filepath[0].'/wp-blog-header.php');
ところで、あなたがworpdressコア(+テーマ機能)を含めたいのなら、それはユーザーにとってより良い:
require('/wp-load.php');
そしてNOT
require('/wp-blog-header.php');