WordPressのプラグインの仕組みは、実際にはフックとして中国語に翻訳されており、WordPressのコア操作に参加することができます。それは素晴らしいことです。以下で詳しく見ていきましょう。
フックの分類
フックは 2 種類に分けられ、1 つはアクションと呼ばれ、もう 1 つはフィルターと呼ばれます。これら 2 つのフックの実装原理は基本的に同じです。後で説明しますが、使用方法の違いは、フィルターには戻り値がありますが、アクションには戻り値がないことです。
アクションの概念は、メールの送信など、特定の状況または特別な場所でいくつかの機能を実行できるようにすることです。フィルターを使用すると、WordPress コアが使用する必要がある値を変更でき、WordPress が使用します。これらの値は関数の戻り値などのようなものです。
アクションフック
wp_head は、テーマの開発中に非常に一般的に使用されるアクション フックです。実際、開発者は wp_head() 関数を head タグに追加します。
プラグイン開発者が head タグに文を追加したい場合は、wp_head フックを使用できます。簡単な例を次に示します。
リーリー コードを追加した後、フロントエンド Web ページのソース コードを表示すると、head タグに追加したコンテンツを確認できます。
上記は簡単な例で、一文を出力しただけです。このフックを使用すると、404 ページに遭遇したときに管理者に電子メールを送信するプラグインを作成することもできます。
フィルターフック
私の個人的な経験によれば、特に PHP に慣れていない人にとって、フィルター フックは理解するのが難しいかもしれません。
フィルター フックを使用すると、フィルター コールバック関数は現在の値であるパラメーターを受け入れることができます。記事のコンテンツを呼び出すために使用される the_content() 関数を思い出してください。この関数は the_content フィルターを提供します。
関数を the_content フックに追加します。この関数は、現在の値であるパラメーターを受け取る必要があります。
リーリーフック原理
実際、add_action() と add_filter() を呼び出すと、配列要素のみが $wp_filter グローバル変数に追加されます。さらに、action と filter は共通のグローバル変数です。つまり、filter とアクションは、同じ名前。
do_action() が呼び出されると、$wp_filter グローバル変数内のこのアクションに追加された関数が検索され、ループで実行されます。
apply_filters() には do_action() よりも 1 つ多くのステップがあり、呼び出されるたびにこの関数の戻り値を受け取り、最終的に使用するために複数回フィルターされた値を返します。
現在のフックリストを取得する
WordPress のアクションとフィルターはプラグイン メカニズムの中核部分であり、特定の場所で実行する必要があるアクションを積極的に追加できるようになります。通常、関数をマウントするには add_action() 関数と add_filter() 関数を使用します。
これらのフックは $wp_filter グローバル変数に保存されているため、フック リストを取得するには、$wp_filter グローバル変数を直接取得できます。
リーリー上記のコードはフックリストを出力します。