フックとは
フックにはアクションフックとフィルターフックがあります。
アクションフックは実行中の特定のポイントもしくは特定のイベント発生時に WordPress のコアが起動させるフックです。
アクション API を使用して、これらのポイントで実行中の PHP 関数を一つ以上指定することができます。 WordPress で発生する特定のイベント、例えば投稿の公開、テーマの変更、管理画面の表示などによって始動させらせます。
フィルターフックはデータベースに追加する前やブラウザのスクリーンに送り出す前にさまざまなタイプのテキストを改造するために WordPress が起動させるフックです。
例えば、タイトルや本文の表示する前に関数のコールバックを行います。
両者の違いは簡単な例を挙げるなら、アクションフックは投稿の際にデータベースの内容を変えてしまうような処理で、フィルターフックはデータベースの内容は変更せずに、表示のみ一部変更する場合などに使用します。
フィルターフックの簡単な作例
記事の句点をすべて「キャイン!」に変更します。
下のコードではフィルターフックが「the_content」で記事の内容が読み込まれる前にコールバック関数を実行します。
コード例(functions.phpに記述)
//フィルターフックの練習〜キャイン! function kyain($content){ return str_replace('。',' キャイン!',$content); } add_filter('the_content','kyain');
フィルターフックの登録にはadd_filter()を使用します。
- 優先順位は同じフィルターフックに複数の関数が指定されている場合に優先順位を決めます。数が小さいほど先に実行されます。デフォルト値は10になります。
- 引数の数は関数の引数の数を指定します。省略すると1になります。
主なフィルターフック
the_title タイトルを画面に出力する前に適用される。
the_content 投稿コンテンツを画面に出力する前に適用される。
the_except 画面を表示する前にデータベースから取得した記事の抜粋に適用する。
など
詳細はプラグイン API/フィルターフック一覧
主なアクションフック
wp loaded WordPress が完全に読み込まれた後
wp_head テンプレートが wp_head 関数を呼び出す際に実行する。
pre_get_posts クエリー変数オブジェクトの生成後、実際にクエリーが実行される前に呼び出されます。
など