フィルター は、2種類のフックのうちの1つです。
WordPress コア、プラグイン、テーマの実行中にデータを修正するための関数を提供します。アクションと対になるものです。
アクションとは異なり、フィルターは単独で動作するものであり、グローバル変数や出力に影響を与えるような副作用を持つべきではありません。フィルターは、何かが返ってくることを期待します。
フィルターの追加
フィルターを追加するプロセスには、2つのステップがあります。
まず、フィルターが実行されたときに呼び出されるコールバック関数を作成する必要があります。次に、コールバック関数を、関数呼び出しするフックに追加します。
add_filter()
関数を使い、少なくとも2つのパラメータを渡します:
string $hook_name
は、フックするフィルターの名前です。callable $callback
は、コールバック関数の名前です。
以下の例は、the_title
フィルターが実行されたときに作動します。
function wporg_filter_title( $title ) {
return 'The ' . $title . ' was filtered';
}
add_filter( 'the_title', 'wporg_filter_title' );
たとえば、「Learning WordPress」という投稿タイトルがあるとすると、上記の例では「The Learning WordPress was filtered」に修正されます。
利用可能なフックのリストについては、フックの章を参照してください。
経験を積むにつれ、WordPress コアのソースコードに目を通すことで、最も適切なフックを見つけることができます。
追加パラメータ
add_filter()
は2つの追加パラメータを受け取ることができ、int $priority
にはコールバック関数に与える優先度を、int $accepted_args
にはコールバック関数に渡す引数の数を指定します。
これらのパラメータの詳細については、アクションの記事をお読みください。
例
<body>
タグに、ある条件を満たした場合に CSS クラスを追加するには:
function wporg_css_body_class( $classes ) {
if ( ! is_admin() ) {
$classes[] = 'wporg-is-awesome';
}
return $classes;
}
add_filter( 'body_class', 'wporg_css_body_class' );