1. HOME
  2. wordpress
  3. フィルターフックとアクションフックについて

フィルターフックとアクションフックについて

フックとは

フックとは、“きっかけ”のこと。
ワードプレスには様々なタイミングでフックが用意されている。

参照

フックを使うということは、これらのタイミングにあわせて自分が用意した関数を実行させるということ。
例えばthe_time()が実行されたのをきっかけに、何かの処理をさせるということ。

フックを利用するには、add_filter()またはadd_action()を使う

add_filter()とadd_action()はほぼ同義と言われている。

アクションとフィルターに関する処理は、「wordpress/wp-includes/plugin.php」に記述されている。
アクションフックポイントを登録するためのメソッドとして、do_actionメソッドがある。
フィルターフックポイントを登録するためのメソッドとして、apply_filtersメソッドがある。

do_action()は戻り値がなく、(処理だけ実行したい)
apply_filters()は戻り値がある(何らかの出力がしたい)

ーーーーーーーーーーー

アクション: アクションは、実行中の特定のポイントもしくは特定のイベント発生時に WordPress のコアが起動させるフックです。アクション API を使用して、これらのポイントで実行中の PHP 関数を一つ以上指定することができます。

フィルター: フィルターは、データベースに追加する前やブラウザのスクリーンに送り出す前にさまざまなタイプのテキストを改造するために WordPress が起動させるフックです。プラグインは、フィルター API を使用して、これらのタイミングで特定のタイプのテキストを改造するために一つ以上の PHP 関数の実行を指定することがきます。

場合によっては、アクションとフィルターのどちらでも同じ目的を達成することができます。例えば、プラグインに投稿のテキストを変更させるには、publish_post にアクション関数を追加してもいいですし(これにより、この投稿はデータベース保存時に変更されます)、the_content にフィルター関数を追加してもかまいません(これにより、この投稿はブラウザに表示されるときに変更されます)。

プラグイン API – WordPress Codex 日本語版 より引用

ーーーーーーーーーーーーー

add_filterは記事本文に対して何か変更を加えたいとき。
add_actionはそれ以外の時に使う?

PHP

それぞれの関数の役割は
$tag→フック名を指定する
$function_to_add→フックしたタイミングで実行したい関数を指定する
$priority→優先順位を整数で指定する。同じフック処理がある場合には数字の小さい方から実行される
$accepted_args→関数で使用する引数の数を指定します。指定できる引数の数はフックによって異なりますが、複数指定の場合でも1つ目の引数が本来の値で、2つ目以降の引数はフックされた時に利用する為の追加の要素にすぎません。

使用事例

PHP

参考記事

他のカテゴリーの記事をみる