フィルターフックのサンプル
- フィルターフックを設定します(apply_filters)
- add_filterなどのメソッドを使って処理を追加します。
- 関数を実行すると、apply_filterなどを行っている箇所で、追加された処理が実行されます。
function filter_test(){
//元になる文字列
$text = 'テスト';
// 文字列にchange_textフィルターを適用
$text = apply_filters('change_text', $text);
// 文字列を出力
print $text;
}
// フィルターフックを設定する
add_filter('change_text', function($text){
return '---' . $text . '---';
});
// 2つめのフィルターフックを設定する
add_filter('change_text', function($text){
return '***' . $text . '***';
});
filter_test();
アクションフックとフィルターフックの違い
・フィルターフックに設定する関数は、テキストを引数として、テキストを返します。 https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API
つまり、
変換前テキスト→ (フィルター処理)→ 変換後テキスト
という処理を行うことを目的としているのが重要なポイントです。
実はフィルターフックとアクションフックは返り値を返すかどうか以外は内部的にほとんど同じものなので、単に用途によって使い分けているだけということになります。(特にadd_filterとadd_actionは全く同じですので、入れ替えても問題ありません。)
逆に言えば、アクションフックについては返り値を利用しない処理を記述します。
- テキスト以外のデータ(WP_Queryオブジェクトなど)を直接書き換えることもあります。(ex. pre_get_postsアクションフック) → オブジェクトは関数内で直接書き換え可能。