アクションフック、フィルターフック、do_action、apply_filters

アクションフックとフィルターフックの書式は同じです。

add_action(フック名, 実行する関数名, 優先順位, 関数で使用する引数の数);
add_filter(フック名, 実行する関数名, 優先順位, 関数で使用する引数の数);

両者のフックにおいて第一引数と第二引数は必須です。第三引数と第四引数はオプションのため、省略することができます。第三引数を省略すると初期値は10、第四引数を省略すると初期値は「1」となります。

アクションフックとフィルターフック

フックとはワードプレス本体にプラグインを引っ張り込むための仕組みで、これにはfunctions.phpに記述された各種フックも含まれます。

アクションフック

アクションフックは実行中のあるポイント又はあるイベント発生時にワードプレスのコアが起動させるフックを言います。「wp_head」「the_post」「wp_footer」などがあります。

フィルターフック

フィルターフックは改造したテキストの内容をデータベースに追加する前や出力画面に送り出す前に変更する仕組みを実現するために、ワードプレスが起動させるフックのことを言います。「the_content」「the_title」「wp_title」「the_category」「the_date」「get_the_excerpt」などがあります。

フックの削除

remove_action(アクションフック名, 関数名, 優先順位, 引数の数);
remove_filter(フィルターフック名, 関数名, 優先順位);

いずれも関数が取り除かれた場合はtrue、除去できなかった場合はfalseが戻り値となります。


アクション、フィルターフック共に一つ以上のPHP関数を指定することができ、それぞれアクションAPI、フィルターAPIと呼ばれています。また、ケースによってはアクション、フィルターフックのどちらを使っても同じ結果を実現することができます。これはプロセスの違いによるもので、両者は基本的に似たような仕組みで動いています。


do_action

do_actionはadd_actionを呼び出すための関数です。

do_action(登録済みの実行したいアクションフック名, 追加の引数);

追加の引数は対応する登録済みのadd_actionのコールバック関数に渡され、実行されます。do_actionは何も返さず、関数またはメソッドを呼び出すだけで、それ以外はapply_filtersとよく似ています。また、第一引数は必須ですが、第二引数は省略できます。

apply_filters

apply_filtersはadd_filterを呼び出すための関数です。

apply_filters(登録済みの実行したいフィルターフック名, 登録済みフィルター関数が変更できる値, 追加の変数);

第一引数と第二引数は必須ですが、第三引数以降は、省略できます。また、第二引数以降は対応する登録済みのadd_filterのコールバック関数に渡され、その結果が返ってきます。その際、add_filterの第四引数においてコールバック関数で使う引数とapply_filtersの第二引数以降で使う引数の数を一致させて記述します。