これは current_filter()
の使用例ですか?
<?php
add_filter("_my_filter", "common_function");
add_filter("_another_filter", "common_function");
function common_function(){
$currentFilter = current_filter();
switch ($currentFilter) {
case '_my_filter':
echo "Called by My Filter";
break;
case '_another_filter':
echo "Called by another filter";
break;
}
}
current_filter()
は現在の実行が行われているフィルタの名前を取得するために使用されているのでしょうか。
こんにちは@ラジSekharan:
私には良さそうに見えますが、現在の使い方を本当にあなたの質問で知りたいのですか、それともcurrent_filter()
がどこから情報を得ているのか理解したいですか?
後者の場合、これは基本的にすべての異なるフック処理関数で起こることです。 do_action()
、apply_filters()
、do_action_ref_array()
、apply_filters_ref_array()
(大幅に単純化された、もちろん):
<?php
function <process_hook>($hook, $value) {
global $wp_filter, $wp_current_filter;
$wp_current_filter[] = $hook; // "Push" the hook onto the stack.
$value = call_user_func($wp_filter[$hook]['function'],$value);
array_pop($wp_current_filter);
return $value;
}
それからcurrent_filter()
がすることはすべて最後のフックをグローバルなwp_current_filter
配列に "プッシュ"することです。
<?php
function current_filter() {
global $wp_current_filter;
return end( $wp_current_filter );
}
一般に、はい、これは有効な使用法です。私があなたであれば、私はさまざまなフィルタにさまざまな機能を渡し、他の機能の共通部分を抽象化します。
このようにあなたの機能のどれでもまさに一つのことをするでしょう。