WordPressの柔軟なカスタマイズ性を支える仕組みのひとつに「フィルターフック」があります。
この記事では、add_filter() と apply_filters() の基本的な使い方から、実用的なカスタマイズ事例までをわかりやすく解説します。
フィルターフックの使い方を知りたい方はぜひチェックしてください。
目次
フィルターフックとは?
フィルターフック(Filter Hook)は、WordPressが特定のデータを出力または処理する直前に、そのデータを開発者が変更できる仕組みです。
たとえば、投稿のタイトルやコンテンツ、ウィジェットの出力内容など、様々な場所にフィルターが設けられています。
add_filter() の基本構文
add_filter() は、フィルターフックに独自の関数を追加するための関数です。
add_filter( $hook_name, $callback_function, $priority, $accepted_args );
$hook_name:対象のフィルターフック名(例:the_title)$callback_function:実行する関数名$priority(省略可):実行の優先順位(数字が小さいほど先に実行)$accepted_args(省略可):コールバック関数に渡される引数の数
以下は、$priority パラメータに関する補足説明として記事に追加できる内容です。既存記事の「add_filter() の基本構文」または「注意点」セクションの直後に入れるのが自然です。
$priority の役割と使いどころ
add_filter() の第3引数で指定できる $priority は、複数のフィルター関数が同じフックに登録されたとき、どの順番で実行するかを制御する値です。初期値は 10 で、数字が小さいほど先に実行されます。
add_filter( 'the_title', 'filter_one', 5 );
add_filter( 'the_title', 'filter_two', 15 );
上記の場合、filter_one() が先に実行され、続いて filter_two() が実行されます。
実行順の調整例
以下のように、優先度を調整して処理順を制御することで、出力結果に影響を与える順序を意図的に設計できます。
function add_prefix( $title ) {
return '★ ' . $title;
}
add_filter( 'the_title', 'add_prefix', 5 );
function add_suffix( $title ) {
return $title . ' ★';
}
add_filter( 'the_title', 'add_suffix', 15 );
この例では、タイトルの前後に ★ マークを付加していますが、add_prefix() のほうが先に実行されるため、順序通りに整形されます。
この補足を入れることで、フィルターの実行順に関する誤解を防ぎ、より高度なカスタマイズにも対応できるようになります。必要であれば $accepted_args に関する補足も可能です。
apply_filters() の基本構文
apply_filters() は、データに対して登録されたすべてのフィルターを適用し、その結果を返す関数です。
主にWordPressコアやプラグイン・テーマの内部で使用されます。
$filtered_value = apply_filters( $hook_name, $value, ... );
$hook_name:フック名$value:変更対象となる値...:必要に応じて追加の引数を渡せます
実際の使用例
投稿タイトルを変更する
function my_custom_title_filter( $title ) {
if ( is_singular( 'post' ) ) {
$title .= '|オリジナルブログ';
}
return $title;
}
add_filter( 'the_title', 'my_custom_title_filter' );
このコードは、投稿のタイトル末尾に「|オリジナルブログ」を追加します。
apply_filters() を使って独自フィルターを作る
自作テーマやプラグインで独自のフィルター処理を行いたいときに使います。
function get_custom_greeting( $name ) {
$greeting = "こんにちは、{$name}さん!";
return apply_filters( 'my_custom_greeting', $greeting, $name );
}
この my_custom_greeting フィルターに対して他の開発者が処理を追加できます。
function add_honorific( $greeting, $name ) {
return $greeting . '(様)';
}
add_filter( 'my_custom_greeting', 'add_honorific', 10, 2 );
よく使われるフィルターフックの例
the_title:投稿や固定ページのタイトルthe_content:投稿本文excerpt_more:抜粋文の「続きを読む」リンクwidget_text:テキストウィジェットの内容
フィルターフックを使う際の注意点
- 返り値を必ず返す:フィルター関数では、元の値を加工して返す必要があります。
- 他のフックと競合しないように関数名はユニークにする:プレフィックスを付けると安全です。
- 優先度で処理順を調整する:複数のフィルターがある場合、
priorityを調整して意図通りの動作にしましょう。
フィルターフックとアクションフックの違い
| 比較項目 | フィルターフック | アクションフック |
|---|---|---|
| 主な目的 | 値の加工・変更 | 特定のタイミングで処理を実行 |
| 戻り値 | 必須(値を返す) | 不要(返り値は使われない) |
| 使用例 | the_title, the_content | wp_footer, init |
まとめ
WordPressのフィルターフックを使えば、データの出力内容を柔軟にカスタマイズできます。
add_filter() で処理を追加し、apply_filters() で独自の拡張ポイントを設けることができます。
テーマやプラグインをより柔軟で再利用性の高いものにするために、フィルターフックの理解は欠かせません。