【WordPress基礎から応用】フック(Hook)とは?アクションとフィルターを理解して自由にカスタマイズする方法

4 min 74 views
WordPressHook

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ならここ!

関連記事