シェアする

WordPress WP_Hookでのアクションとフィルタ登録

シェアする

WordPressにはactionやfilterという仕組みがあり、ユーザーにレスポンスを返すまでの流れの中の任意のポイントで事前に登録したコールバック関数を実行することができます。これにより、WordPressの内部処理における制御の流れをコントロールすることができ、テーマやプラグインの中で頻繁に利用されています。

従来のAPIからの変更点

actionやfilterを使う場合は、通常add_actionadd_filterというAPIを使ってコールバック関数を登録しますが、内部構造を理解している人は、以下のようなハックをしているかもしれません。というのは、以前のadd_filter関数の中身が以下のように実装されていたからです。

$wp_filterは、単純なarrayとして実装されていたので上記のような配列アクセスで値を代入できました。しかし、今回はWP_Hookというクラスに置き換わっています(このクラスは、IteratorとArrayAccessを実装しているので配列のような振る舞いをします。https://github.com/WordPress/WordPress/blob/master/wp-includes/class-wp-hook.php)。そして、タグごとにWP_Hookオブジェクトが生成されています。

WP_Hookのメソッドを使う

以上をふまえ、actionやfilterの登録にはadd_actionadd_filterのAPIを使うかまたは以下のような方法でも可能なようです。

add_action、add_filter

冗長になるので素直にadd_actionやadd_filter関数を使った方がいいですね。。

参考リンク

スポンサーリンク
Translate »