WordPressフックについて知っておくべきことすべて
公開: 2015-07-11WordPressフックに夢中ですか?
WordPressがWebサイトに必要なコンポーネントをレンダリングするように機能するため、内部では多くのことが行われています。 各ページは、かなりの数の関数とデータベースクエリで構成されています。 WordPressコアとテーマは連携して、テキスト、画像、スタイルシート、その他のファイルを出力します。 ブラウザの助けを借りて、これらすべての部分が解釈され、1つのWebページにまとめられます。 フックは、WordPressをカスタマイズ、拡張、拡張する機能を提供します。
フックは、WordPressに文字通り「フック」してデータを取得、挿入、変更したり、バックグラウンドで他のタスクを実行したりできるため、適切な名前が付けられています。 ある意味で、これらのフックにカスタムコードを「掛ける」のです。 ご存知のように、WordPressコアを変更することはお勧めできません。 このため、WordPressのアクションフックとフィルターフックは、既存の機能を変更したり、新しい機能を作成したりするための最良の方法です。
フックの種類
フックは、カスタマイズを行うときに必要な部分です。 フックには、アクションフックとフィルターフックの2つの主要なタイプがあります。 それぞれが異なるものを提供するので、どれをいつ使用するかを理解することが重要です。
フックをどこにでも簡単に投げ込むことはできません。 「フックする」何かが必要です。 そのフックの実行ポイントを持つことが必要です。 良いニュースは、WordPressコア全体に、参照できる組み込みのフックがあることです。

フックを使用する理由
WordPressのコア機能の多くはアクションとフィルターを使用するため、フックを使用して多くの変更を行うことができます。 フックを理解することは、WordPressで開発する人や、WordPressやテーマの動作を変更したいデザイナーにとって絶対に必要です。
アクションフック
アクションフックは、イベント自体と混同しないように、何かが発生したことを示します。 アクションは、WordPressで発生する特定のイベントによってトリガーされます。 イベントの例としては、投稿の公開、テーマの変更、プラグインのアクティブ化などがあります。 アクションを使用すると、ページの処理の特定の時点で機能を追加できます。 アクションフックは次のようなことを行うことができます。
- WordPressデータベースのデータを変更する
- ブラウザに表示される内容を変更する
- イベントが発生したときにメールを送信する
- ウィジェット、メニュー、またはカスタムメッセージをページに追加します

アクションフックの例
add_action( $hook, $function_to_add, $priority, $accepted_args );
add_action関数に必要なパラメーターは、追加するフックと関数です。 優先度を含めるかどうかはオプションです。 1から999のスケールに基づく整数値で、この数値はその特定のフックの関数の優先順位を決定します。 必要ない場合もありますが、最後のパラメーターは、複数の引数を渡したり受け入れたりする必要がある場合に使用されます。
基本的なアクションフックを見てみましょう。
// This is the function, name it accordingly
function custom_welcome_text() { ?>
<div class="optional-custom-class">Hello WordPress!</div>
<?php }
// Action function that outputs the function above into the theme hook
add_action( 'welcome_hook', 'custom_welcome_text', 5 );
この基本的なフックは、ページの上部に「HelloWordPress」を追加します。 優先度は5です。数値が小さいほど、以前の実行に対応します。 デフォルトでは10に設定されているため、この例はデフォルトの前に実行されます。

フィルターフック
一般的なシナリオと、フィルターフックがどのように機能するかを見ていきましょう。 ユーザーがサイトにアクセスし、投稿が読み込まれるたびに考えてみてください。 WordPressページのライフサイクルの一部として、WordPressはデータベースにその投稿を照会し、ブラウザに返され、ユーザーが読むことができるようになります。 それはすべて単純に聞こえますが、コンテンツが提供される前に、WordPressは確立されたフィルターを介してデータを実行します。 これらのフィルターフックは、必要に応じて簡単に作成できます。
このように考えてください。アクションは特定のイベントによってトリガーされますが、フィルターを使用すると、データの処理中にデータの傍受と変更が可能になります。 フィルタフックは、データをブラウザにレンダリングしたり、ブラウザからデータベースにデータを保存したりする前に、データをインターセプト、管理、または返す必要がある場合に使用されます。 たとえば、WordPress HTML要素に別のCSSクラスを挿入したり、追加のメタフィールドタイプを登録したりできます。 これらは両方ともフィルターフックで実行できます。

WordPressがページを生成するとき、フィルターはデータベースとブラウザーの間に配置されます。 また、WordPressがデータベースに新しい投稿やコメントを追加するときに、ブラウザとデータベースの間に配置されます。 このため、フィルターフックは次のような便利なことを行うことができます。
- データベースにデータを追加するか、ブラウザ画面に送信します
- データベースに入る前にデータベースから出てくるデータ、またはデータベースに入る前にブラウザから出てくるデータを操作します。
フィルターフックの例
以下の例では、フィルターフックがコンテンツに対してどのように機能するかを見ていきます。 このフックは、コンテンツが使用される、データベースに配置される、または画面上で表示するためにWordPressによってレンダリングされる直前に発生します。 これにより、フィルターフックが起動されたときにデータが変更されます。
add_filter関数は、フィルターにフックするために必要なものです。 引数はおなじみのように見えるかもしれませんが、 add_filterはadd_actionの引数と同じです。 投稿コンテンツが表示される前に呼び出されるWordPressフィルターthe_contentにフックしてみましょう。 この簡単な例では、フィルターを使用して、すべての投稿に著作権表示を追加できます。 この時点で、フィルターは渡されたデータに対してアクションを実行します。
add_filter( 'the_content', 'add_copyright_notice' );
function add_copyright_notice( $content )
{
return $content . " <br>This content is copyrighted.";
}
フィルタを使用する場合は、必ず何かを返す必要があります。そうしないと、問題が発生します。
テーマにフックを追加する
テーマにフックとフィルターを追加するときは、子テーマで作業していることを確認してください。 主な理由は、親テーマで作業している場合、テーマファイルが更新されると、これらの変更が上書きされる可能性があるためです。
うまくいけば、フック、フックで何ができるか、フックがどのように役立つかについて理解を深めることができます。 フックは、非常に単純、非常に複雑、またはその間のどこかになります。 基本的な概念がわかれば、すぐに夢中になります。
