プラグインで拡張?フックについて解説

プラグインでカスタマイズ、拡張…やったことない人には難しいかもしれません。それはフックについて知らないから。
フックの仕組みを簡単に理解しましょう。

フックって何?

WordPressが特定の処理を行った時に、フックで追加(引っ掛けた)処理を同時に行うって言う仕組みみたいなもの…と思ってください。

フックがあると…こうなります。

雪々南

検索ボックスを表示する所に、「フック」を仕掛けちゃおう。add_filter(‘get_search’……っと。

WordPress

検索ボックスを表示します。

WordPress

お、検索ボックスを表示する処理では’get_search’フックの処理を実行しなくっちゃ。あ、雪々南ちゃんにフックが仕掛けられてるぞ。じゃあ、フックに仕掛けられた処理を実行して、検索ボックスを表示しよう。

と言う感じです。
プログラマの方やゲーマーの方であれば、処理トリガーとかパラサイトルーチンのアタッチコールとかをイメージしたら、解りやすいかもしれません。

フックは2種類ある

フックにはアクションフックフィルターフックと呼ばれる2種類が存在します。

アクションフック

WordPressが行う処理に対して、アクションフックを仕掛けている場合、
その処理が行われる時に、仕掛けたアクションフックも同時に行われるフックです。基本的に値を返しません(returnをしない)。
大抵の使い方では、追加に表示させたりと言った事をしています。

フィルターフック

WordPressが何らかの値を取得する処理に対して、フィルターフックを仕掛けている場合は、その何らかの値を取得する処理が行われる時に、フィルターフックが仕掛けられていると、そっちの値に変更しちゃうフックです。基本的に値を返します(returnをする)。

仕掛けるフックの種類が解らない場合

基本的には、あまり最初は気にする必要ありません
フィルターフックとして仕掛けても、仕掛けたフックがアクションフックであった場合にも仕掛けられます。(逆はされない)
解らない場合や慣れていない場合は、とにかくフィルターフックとして仕掛けちゃいましょう。最初から、フックの種類を気にする必要はありません。まずは、値を返さないフィルターフックとしてアクションフックが実行される…と覚えて始めても大丈夫です。

フックの仕掛け方

add_action(
	フック名,
	フックを処理するfunction名,
	優先度(デフォルトは10),
	引数の数(デフォルトは1)
);
function フックを処理するfunction名() {
	フックの処理
}

となります。
フィルターフックであれば、add_actionではなくadd_filterとなり、フックの処理の後にreturnで値を返す形です。
優先度は数字が大きければ大きいほど先に実行されます。
アクションフックでは、別のフックより前に表示したい場合に優先度の数字を大きくしましょう。別のフックより後に表示したい場合は優先度を下げて使います。
フィルターフックでは、優先度を小さくすると、そのフックが最後に実行されやすくなる為、他のフックの値が上書きされると言う事から、優先度を小さい数字にする事で強制的にそのフックの返却値で実行させる…と言ったようにも使えます。

フックを使う事で…

例えば…

  • 検索ボックスをフックで書き換えると、検索ボックスの下に検索条件を追加できたり
  • 記事一覧の時間表示部分にフックで書き換えると、時間のフォーマットを和暦に書き換えられたり
  • パンくずをフックで書き換えると、「投稿」と言う文字を「ブログ」などに書き換えられたり

色々な所の表示を思いのままに変更できたりします。

最後に

是非、子テーマを使わないカスタマイズを楽しむきっかけとしても、フックを試してみてください。

この記事を書いた人

kmix-39

kmix-39

主に日本の関西に出没する。
小学時代にWindows 95に触れ、BASICを始めて以来、HTML、Perl、Java(JSP, Servlet)、COBOL、C++、C#、PHP、Objective-C、Swift…と、数々の言語を地獄の現場を経験しながら覚えていった元IT社畜。
「好きな時に 好きなことを 好きなだけ」をしたい。