【WordPress】アクションフックとフィルターフックの簡単な仕組み

functions.phpに頻繁に書くadd_action()関数ですが、その関数自体や引数の意味、そもそもフックってなに?な状態だったので、調べました。

 

 

アクションフックを用いた機能の追加

add_action()関数を用いてることで、アクションフックと呼ばれる処理を登録します。

アクションフックは、WordPressのなにかしらの処理において、その処理の途中で新しく作成したプログラムを挿入して実行するために使います。

 

例えば、数あるアクションフックの一つに「admin_head」というものがあります。

これは、HTMLヘッダーの閉じタグ</head>の直前で何か実行したい処理があるときに使います。

</head>の直前で実行したい処理の例としては、特定のページで使いたいCSSやJavascriptを読み込んだり、ファビコンを登録したりと、様々にあるでしょう。

 

「HTMLの読み込み」という処理の途中に用意されている「admin_head」というフックに「add_action()」関数を使って処理を挿入するということです。

 

admin_headフックはwp-admin/admin-header.phpというファイルの中137行目あたりに記述されています。

これは</head>タグが読み込まれる直前に書かれているのがわかります。

do_action()が呼び出されたタイミングで、do_action()関数の引数に書かれたアクションフックが実行される仕組みです。

 

このadmin_headフックに例えば以下のような処理をひっかけます。

独自に名付けた「add_mystyle」関数を「admin_head」フックが読み込まれたタイミングで実行されます。

アクションフックの仕組み

 

 

フィルターフックを用いた機能のカスタマイズ

アクションフックは機能を追加していましたが、フィルターフックは数値などのデータを変更または追加するためのものです。

記事の抜粋文を抽出するためのthe_excerpt()関数いおいて、抜粋文の語尾につく「[…]」という文字列を変更する処理を施すことは有名です。

「[…]」という文字列を「…続きを読む」とう文字列に変更する場合は以下の通りです。

フィルターフック

フィルターフックは「apply_filters()」関数で登録します。

 

 

まとめ

機能の追加は、add_action()でアクションフックを定義して該当のdo_action()で実行される。

数値やデータの変更および追加は、add_filters()でフィルターフックを定義して該当のapply_filters()で実行される。

 

プラグインによる様々な拡張機能のひとつとして、WordPressのエンジニアとして使いこなしたいものです。