WordPressは、世界中のWebサイトの約40%以上で使われているCMS(コンテンツ管理システム)です。
その人気の理由のひとつが、「拡張性の高さ」。
この拡張性を支えているのが、本記事の主題である 「フック(Hook)」 という仕組みです。
この記事では、初心者がつまずきやすい“フックの概念”を、アクションフックとフィルターフックに分けて、コード例を交えながら徹底的に解説します。
また、実務での活用例や注意点も取り上げるので、テーマ開発・カスタマイズを安全に進めたい方は必見です。
目次
そもそもフック(Hook)とは?
WordPressの処理は、ざっくり言えば「テンプレートファイルを順番に読み込む仕組み」で動いています。
しかし、すべてのコードを直接書き換えるのは危険です。
アップデート時に上書きされてしまったり、他の機能と競合して不具合を起こす可能性があるからです。
そこで登場するのが「フック(Hook)」。
👉 フックとは、WordPressの実行途中に“自分の処理を引っかける”ための仕組みです。
WordPress本体やテーマ・プラグインの特定のポイントに“フック”を差し込むことで、自分の関数を呼び出せるようになります。
つまり、既存の仕組みを壊さずにカスタマイズできるということです。
フックの種類は大きく2つ
| 種類 | 主な目的 | 実行タイミング | 代表的な関数 |
|---|---|---|---|
| アクションフック (Action Hook) | 処理を追加する | ページ生成中の特定イベント時 | add_action() |
| フィルターフック (Filter Hook) | 値を加工して返す | 画面出力やデータ保存時 | add_filter() |
アクションフック(Action Hook)の仕組み
アクションフックは、「このタイミングで何かをしたい」というときに使います。
たとえば「ヘッダーの前にメッセージを表示したい」や「記事が公開されたときにメール通知したい」などです。
✅ 書き方
add_action('フック名', '実行したい関数名');
✅ 例:フッターにメッセージを追加する
function my_custom_footer_message() {
echo '<p style="text-align:center; color:#666;">© 2025 SHINGO HAGIHARA All Rights Reserved.</p>';
}
add_action('wp_footer', 'my_custom_footer_message');
このコードを functions.php に記述すると、
すべてのページのフッター(</body>直前)にメッセージが自動挿入されます。
💡ポイント
wp_footerは WordPressで定義されている“実行タイミングの名前”。add_action()は「このタイミングでこの関数を実行してね」という宣言。- 元のテーマファイルを1行も変更せず、追加処理だけを注入できます。
フィルターフック(Filter Hook)の仕組み
フィルターフックは、データを加工して返すときに使います。
アクションが「実行」なのに対して、フィルターは「変換」と覚えておくとわかりやすいです。
✅ 書き方
add_filter('フック名', '実行したい関数名');
✅ 例:タイトルの前にアイコンを付ける
function add_star_to_title($title) {
return '★ ' . $title;
}
add_filter('the_title', 'add_star_to_title');
💡ポイント
the_titleは「投稿タイトルを出力する前に通る」フック。returnが重要で、加工後の値を必ず返す必要があります。- このようにすれば、タイトルすべての前に「★」が自動的に付与されます。
実践:アクションとフィルターを組み合わせる
例えば、「投稿の末尾に著者情報を追加する」というカスタマイズをしたい場合はどうでしょう?
function add_author_box($content) {
if (is_single()) {
$author_box = '<div class="author-box"><p>この記事の執筆者:' . get_the_author() . '</p></div>';
return $content . $author_box;
}
return $content;
}
add_filter('the_content', 'add_author_box');
the_contentフィルターを使い、本文の後ろにHTMLを追加。- シングルページ(記事詳細)のみ条件分岐で適用。
→ 結果的に、投稿本文の下に自動的に「著者紹介」が挿入されます。
フックがなぜ重要なのか?
フックは、テーマやプラグイン開発の心臓部です。
以下のようなメリットがあります。
🔹1.アップデートに強い
WordPress本体やテーマの更新で上書きされない。
→ functions.php や独自プラグイン側に書くことで、安全に機能追加できます。
🔹2.再利用性が高い
複数サイトで同じ関数を使い回せるため、開発効率が上がります。
🔹3.トラブルシューティングがしやすい
特定のフックを無効化(remove_action() / remove_filter())して動作確認が可能。
→ 「原因切り分け」にも活躍します。
🚫 フックを使う際の注意点
| 注意点 | 内容 |
|---|---|
| フック名の誤字 | 定義済みフック名を正確に書かないと動作しない。 |
| 優先度 | add_action() / add_filter() の第3引数で実行順を制御できる。 |
| remove系関数 | remove_action() / remove_filter() で解除可能。 |
| 再定義の衝突 | 同名関数や重複登録で競合する可能性あり。 |
よく使われる代表的なフック一覧
| フック名 | 種類 | 使われる場面 |
|---|---|---|
init | アクション | WordPressの初期化時に処理を追加 |
wp_head | アクション | <head> 内にコードを追加 |
wp_footer | アクション | フッターにスクリプトを追加 |
the_content | フィルター | 投稿本文を加工 |
the_title | フィルター | 投稿タイトルを加工 |
comment_text | フィルター | コメント文を加工 |
よくある質問(FAQ)
Q1. フックはどこに書くの?
→ 通常は functions.php に書きます。複雑になる場合は独自プラグインを作って管理すると安全です。
Q2. 優先順位を変えたいときは?
→ 第3引数に数値を指定します。小さいほど先に実行されます。
例:add_action('init', 'my_func', 5);
Q3. フィルターでreturnを忘れると?
→ 何も出力されなくなります。必ずreturnで値を返しましょう。
Q4. どこで使えるフックが確認できるの?
→ WordPress Codex(公式ドキュメント) に一覧があります。
テーマやプラグインの中で do_action() や apply_filters() を探すのもおすすめです。
まとめ:フックを理解すればWordPressがもっと自由になる
フックを理解することは、WordPressを「使う側」から「作る側」へ進む第一歩です。
わずか数行のコードでも、テーマやプラグインの動作を自在にコントロールできます。
| 項目 | 内容 |
|---|---|
| 用語 | Hook(フック)=処理の差し込みポイント |
| 分類 | Action Hook(処理追加)/Filter Hook(値加工) |
| 関数 | add_action() / add_filter() |
| メリット | 拡張性・再利用性・安全性が高い |
| 注意点 | return忘れ/競合/優先度に注意 |
最後に
WordPressは「フック」で拡張できるからこそ、世界中の開発者に愛されてきました。
「自分だけの機能をテーマに追加したい」「既存の出力を少し変えたい」——
そんなとき、最初に思い出してほしいのが “フック” です。
WordPressならここ!


