WordPressの「フック」とは?
WordPressのプラグイン開発やカスタマイズを学び始めると、必ず出てくるのが「フック(hook)」です。そして、多くの人が最初につまずくのもここです。実際、私が学習ロードマップの記事で「フックは最大の山」とお伝えしたのも、それだけ重要で、かつ最初はイメージしづらいからです。
結論から言うと、フックとは、WordPressの処理の流れの中にあらかじめ用意された”差し込みポイント”のことです。ここに自分の処理を引っかける(hookする)ことで、WordPress本体やプラグイン・テーマのコードを直接書き換えずに、機能を足したり、出力を変えたりできます。フックには2種類あり、「処理を差し込む」アクションフックと、「値を受け取って、変えて返す」フィルターフックに分かれます。この記事で、その違いと使い方を整理しましょう。
ここに画像1を差し込む
なぜフックが「WordPress開発の心臓」なのか?
理由はシンプルで、本体のコードを直接触らずに、安全に機能を足せる仕組みだからです。WordPress本体やプラグインのファイルを直接書き換えてしまうと、アップデートのたびに変更が上書きされて消えてしまいます。せっかくのカスタマイズが、更新の瞬間に無かったことになるのです。
フックを使えば、自分の処理を独立した形で”外づけ”できます。本体は触らないので、更新が来ても壊れません。だからこそ、テーマの functions.php や自作プラグインでは、カスタマイズのほとんどをフック経由で行います。フックを制することが、WordPress開発を制することにつながるわけです。
2種類のフック:アクションとフィルターの違い
フックの2種類は、役割がはっきり違います。ここを押さえるだけで、理解が一気に進みます。
| 観点 | アクションフック | フィルターフック |
|---|---|---|
| 役割 | 特定のタイミングで処理を実行する | ある値を受け取り、加工して返す |
| 戻り値 | 返さない(何かを”する”だけ) | 必ず return して値を返す |
| 使う関数 | add_action() | add_filter() |
| 典型例 | 記事保存時にメールを送る/head にタグを出力する | 本文の末尾に定型文を足す/タイトルの文字を変える |
ざっくり言えば、アクションは「あるタイミングで何かをする」、フィルターは「通り道の値を書き換える」。この一言の違いが、すべての土台です。
アクションフックの使い方(コード例)
アクションフックは、add_action( 'フック名', '実行する関数名' ) の形で使います。次は、記事一覧のループが始まるタイミングで、自分のメッセージを表示する例です。
|
1 2 3 4 5 |
// ループが始まるタイミングで、自分の処理を実行する function my_notice() { echo '<p>お知らせ:ただいまキャンペーン中です。</p>'; } add_action( 'loop_start', 'my_notice' ); |
ポイントは、この関数は値を返していないことです。「決まったタイミングで、何かをする」。これがアクションフックの役割です。
フィルターフックの使い方(コード例)
フィルターフックは、add_filter( 'フック名', '加工する関数名' ) の形で使います。関数は値を受け取り、加工して、必ず return で返すのが決まりです。次は、記事本文の末尾に一文を追加する例です。
|
1 2 3 4 5 |
// 記事本文の最後に、定型文を追加する function my_add_text( $content ) { return $content . '<p>※この記事は専門エンジニアが執筆しています。</p>'; } add_filter( 'the_content', 'my_add_text' ); |
アクションとの決定的な違いは、受け取った $content を return で返している点です。フィルターは「通り道の値を書き換えて、次へ渡す」役割なので、返さないと値が失われてしまいます。これが、次に紹介する”よくあるミス”の第1位にもつながります。
初心者がやりがちな4つのミス
私が学習者を見ていて、フックで特に多いと感じるミスが次の4つです。先に知っておくだけで、ハマる時間を大きく減らせます。
- フィルターで return を忘れる:値を返さないため、本文やタイトルが空っぽになって消える。フィルターは必ず return、と覚えておく
- 条件分岐を付け忘れる:どこで動かすかを絞らないと、意図しないページ全体に処理が及び、思わぬ場所に影響が出る。「このページのときだけ」という条件を添える
- 優先度(priority)の設定が不適切:他の処理との実行順がずれて、期待どおりの結果にならない。順番が重要なときは優先度を意識する
- 引数の数を設定していない:フィルターやアクションに複数の引数を渡したいのに設定し忘れ、必要な情報が関数に届かずエラーや誤動作になる
どれも、知らないと必ず一度はハマる定番です。逆に言えば、この4つを頭に入れておくだけで、フックはぐっと怖くなくなります。
フックは「手を動かして」腹落ちさせる
正直なところ、フックは文章を読むだけでは、なかなか腹落ちしません。小さなフックを実際に書いて、動かして、結果を目で見る。これがいちばんの近道です。私が講座で大事にしているのも、まさにこの部分で、あえて「return を忘れたらどうなるか」を実演して、本文が消える様子を見せたりします。失敗の姿を一度見ておくと、二度と忘れません。エラーは、フックを理解するための最高の教材なのです。
まとめ:フックは「差し込みポイント」。2種類を押さえれば怖くない
フックは、WordPressが用意してくれた“差し込みポイント”です。本体を触らずに機能を足せるから、更新にも強い。そして、アクション(決まったタイミングで実行)とフィルター(値を受け取って変えて返す)の2種類さえ押さえれば、大きな山は越えられます。あとは、よくある4つのミスに気をつけながら、実際に手を動かして慣れていくだけです。
「フックを、手を動かしながら一気に体得したい」という方は、下記の講座で実際の開発の様子(成功も失敗も)をそのままご覧いただけます。冒頭は無料で視聴できます。もし「自分で書くより、作ってもらいたい」という場合は、私たちEdel Heartsが開発を承ります。
- 学ぶ順番を確認する:WordPress開発の学習ロードマップ
- 講座の内容と無料パートを見る:WordPressプラグイン開発講座の紹介ページ
- 講座を受講する(Udemy):WordPressカスタマイズとプラグイン開発講座
- 自分で作るより依頼したい方:WordPressカスタマイズ・プラグイン開発