WordPressファイルの外部でWordPress機能を初期化するための2つの方法を読みましたので、WordPressブログ以外のページやWebサイトでこれらの機能を使用できます。
これら2つの方法のどちらが正しい方法ですか?両方が正しい場合、各方法のユースケースは何ですか?どちらかの方法を使用することの違いは何ですか?
方法1:
<?php
define('WP_USE_THEMES', false);
require('./wp-blog-header.php');
?>
方法2:
<?php
define('WP_USE_THEMES', false);
require('./wp-load.php');
?>
ファイル間の違いはほとんどありません。 WordPressページを表示すると、最初に呼ばれるファイルはindex.php
です。そしてそれは、本質的にあなたの「方法1」です。
define('WP_USE_THEMES', true);
/** Loads the WordPress Environment and Template */
require ('./wp-blog-header.php');
ブログのヘッダーファイル(WordPressの残りの部分をキューに入れる)は直接wp-load.php
をロードし、WordPress自体を起動します。これがwp-blog-header.php
の大部分です:
if ( !isset($wp_did_header) ) {
$wp_did_header = true;
require_once( dirname(__FILE__) . '/wp-load.php' );
wp();
require_once( ABSPATH . WPINC . '/template-loader.php' );
}
だからあなたの2つの方法の違いは...ロードされているものです。
方法1はWordPressが自分自身をロードするために正確に行うことです(テーマをオフにすることを除いて)。あなたが all を必要としていて、デフォルトのフック/アクションをすべて起動したいのであれば、そのルートで行ってください。
方法2はもう少し先のステップです。 WordPressをすべてロードしますが、wp()
を呼び出したり、テンプレートローダーを呼び出したりしません(テーマによって使用されます)。方法2はもう少し軽量になりますが、同じ機能を提供するはずです。
あなたの質問からの方法2:
<?php
define( 'WP_USE_THEMES', false ); // Don't load theme support functionality
require( './wp-load.php' );
wp-load.php
はWordPressのすべての機能へのアクセスです、それがすべてです。最初の行はWordPressにテーマファイルをロードしないように伝えます。多分ファイルはあなたの要求に必要であり、それから行を削除してください。
wp-blog-header.phpはヘッダステータスを添付し、httpステータスコード404を返します。
wp-load.phpはしません
HTTPステータスコードをチェックするのでajaxを使用するときに注意するのに役立ちます
テーマのfunctions.phpをロードすると問題が発生することがあります。それは私の他のページのHTMLを壊していました。それで私は私がして私の問題を解決したのです。
define('STYLESHEETPATH', '');
define('TEMPLATEPATH', '');
require_once(RAIZ_WORDPRESS."/wp-load.php");
@ ninja08
XDebug php拡張を使用して、スクリプトを分析できます。
最初の行から;xdebug.profiler_enable = 1
を削除してphp.ini
ファイルで;
を有効にし、この後Apacheサーバーを再起動してwordpressサイトを実行します... xamppサーバーのtmpディレクトリで.. WincachGrind applicationでこのファイルを開きます。
今、あなたはあなたのスクリプトの地図を見ることができます