WordPressファイルの外でWordPress機能を使用する正しい方法は何ですか?


59

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');
?>

「WPの外部」で使用しようとしているWP機能とその理由 あなたがしているように、これらのいずれかの方法はまだ、(テーマをサポートしていないが)WP環境をロードしますまだ WPの内部の機能を呼び出します。
EAMann

2つの方法の違いを理解しようとしています。私がやることは、ワードプレスのテーマをサポートスクリプトに統合することです。ワードプレスのヘッダー、フッター、ループに加えて、ウィジェットやその他のプラグインのサポートが必要になります
-alhoseany

私はこれがあなたが物事をやりたい方法だと本当に疑っています... WordPress自体をブートストラップしようとするよりも良い解決策があります。
-EAMann

私は提案を募集しています、私は物事を行うための最良の方法を探していますか wordpressテーマを外部のWebアプリケーションと統合する最良の方法は何ですか?
-alhoseany

回答:


58

ファイル間にほとんど違いはありません。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がそれ自体を読み込むために行うこととまったく同じです(テーマをオフにすることを除く)。すべてのWordPress が必要で、デフォルトのフック/アクションをすべて起動したい場合は、そのルートを使用してください。

方法2は、さらに一歩進んだものです。WordPressのすべてをロードしますwp()が、テンプレートローダー(テーマで使用)を呼び出したり呼び出したりしません。方法2は少し軽量ですが、同じ機能を提供するはずです。


3
これらのすべてのファイルをマップする図または何かがありますか?ずっと前に見ましたが、見つかりません。
ninja08

17

あなたの質問からの方法2:

<?php 
define( 'WP_USE_THEMES', false ); // Don't load theme support functionality
require( './wp-load.php' );

wp-load.phpWordPressのすべての機能へのアクセスです。それだけです。最初の行は、WordPressにテーマファイルではなくロードするよう指示しています。ファイルが要件に必要な場合は、行を削除してください。


1
その最初の行はどういう意味ですか?
Sagive SEO

8
最初の行は、WordPressにすべてのテーマサポート機能をロードしないよう指示しています。基本的に、読み込むファイルの数を減らします。
EAMann

最初の行は最初の方法にのみ必要ですか?
mcont 14年

4

wp-blog-header.phpはヘッダーステータスを添付し、HTTPステータスコード404を返します

wp-load.phpは

httpステータスコードをチェックするajaxを使用する場合に注意するのに役立ちます


2

テーマのfunctions.phpをロードすると、問題が発生する場合があります。他のページのhtmlが壊れていました。それが私がやったことであり、私の問題を解決しました:

define('STYLESHEETPATH', '');
define('TEMPLATEPATH', '');
require_once(RAIZ_WORDPRESS."/wp-load.php");

0

@ ninja08

xDebug php拡張を使用して、スクリプトを分析できます。

最初の行から削除;xdebug.profiler_enable = 1してphp.iniファイルを有効にし、;この再起動後にApacheサーバーを実行し、ワードプレスサイトを実行します... xamppサーバーのtmpディレクトリに作成されたファイル..WincachGrindアプリケーションでこのファイルを開きます。

今、あなたはあなたのスクリプトの地図を見ることができます

WincacheGrind Simple Wordpress Analyze


これをninja08の下のコメントに追加する必要があります。これは今では間違った答えです。
alhoseany

2
@alhoseanyはい。
モスタファ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.