WordPressはプラグインファイルをどの順序で読み込みますか?


21

プラグインはWordPressにどの順番で読み込まれますか?

また、特定のプラグインのフォルダー内で、ロードの順序は何ですか?


このプラグインで非常に深くデバッグできます:https : //wordpress.org/plugins/whats-running/ WordPressのすべての必要なファイルをリストします。
-SzépeViktor 14

回答:


26

最初の質問への回答:

  1. wp-settings.php、WordPressは最初に使用する必要のあるプラグイン(オプションのmu-pluginsフォルダー内のプラグイン)をチェックし、それらをロードします。

  2. 次に、マルチサイトインストールを実行している場合、ネットワークでアクティブ化されているプラ​​グインをチェックし、それらをロードします。

  3. 次にactive_pluginswp_optionsデータベーステーブルのエントリを調べて、他のすべてのアクティブなプラグインをチェックし、それらをループします。プラグインはアルファベット順にリストされます。

WordPressがほとんどすべてをロードする順序は次のとおりです。http//codex.wordpress.org/Action_Reference#Actions_Run_During_a_Typical_Request

問題は、適切に作成されたプラグインはWordPressフックを使用するため、通常、個々のプラグインがどの順序で読み込まれるかは関係ありません。(適切に作成されたプラグインは、競合しないように、関数とクラスのプレフィックスも付けます。)

プラグインAPIの詳細:http : //codex.wordpress.org/Plugin_API/

2番目の質問への回答:

完全にプラグインに依存します。WordPressはプラグイン内の1つのファイルのみをロードします。ファイルには通常、名前が付けられthe-plugin-name.php、上部にタイトル、説明、著者などが含まれます。require_onceおよびその他のファイルを使用して、残りのファイルをロードするのはプラグイン次第wp_enqueue_scriptです。


プラグインを作成し、後で元のプラグインの実行後に実行するアドオンプラグインをリリースする場合、その順序を確認するにはどうすればよいですか?
urok93

それは本当にあなたがやろうとしていることによって異なります。ただし、通常は、優先度を設定できるadd_action()関数を使用して、特定のフックで実行するようにそれぞれを設定します。codex.wordpress.org/Function_Reference/add_action
SeventhSteel

@SeventhSteelしかし、プラグインが別のプラグインによって作成されたフックに依存している場合はどうでしょう。あるプラグインがapply_filters()フックを作成するために使用するが、を使用するプラグインの前に実行add_filter()される場合、引き続き機能しますか?論理的には、apply_filters()すでに起動しているようなのでadd_filter()、2番目のプラグインの呼び出しは何もしません。プラグインで作成されたフックのみを使用する場合、プラグインがロードされる順序は重要ですか?
trusktr

重要なのは、apply_filters()実行時にロードされたものです。add_filter()前に実行する必要がありますapply_filters()。場合はadd_filter()、プラグインファイルではなく、他の関数である、それは上で動作するplugins_loaded一般的にあなたが必要があると思います前に起こるために起こっているフックapply_filters()
SeventhSteel 14年

一般的なシナリオは、コンテンツを後に追加するいくつかのプラグインを持つことですthe_content-外観の順序はどのように決定されますか?
ダンナウス

9

すべてのプラグインが次のようにロードを完了した後に実行される「遅延ロード」アクションをプラグインに含めると便利です。

add_action('plugins_loaded', 'my_late_loader');

関数my_late_loaderは、他のすべてのプラグインの後に開始されます。これにより、my_late_loader内で開始される自分の関数my_other_functionで他のプラグインによって定義されたフックを使用できます

/**
 * Late loading function for actions that must run after all plugins 
 * have loaded
 */
function my_late_loader(){
    add_action( 'some_hook', 'my_other_function', 10, 1);
}

少し複雑ですが(これは知っています)、これにより、プラグインのロード順序に関係なく、追加される前に他のプラグインのフックが作成されます。

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