Este é um bom exemplo de uso de 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;
}
}
Então eu estou supondo que current_filter()
é usado para obter o nome do filtro para o qual a execução atual está acontecendo?
Oi @ Raj Sekharan :
Parece bom para mim, mas está querendo saber o uso atual realmente sua pergunta ou você quer entender de onde current_filter()
obtém sua informação?
Se este último, aqui é basicamente o que acontece em todas as diferentes funções de processamento de gancho, e. do_action()
, apply_filters()
, do_action_ref_array()
, apply_filters_ref_array()
( muito simplificado, claro ):
<?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;
}
Então tudo o que current_filter()
faz é recuperar o último gancho "empurrado" para o array global wp_current_filter
, por exemplo:
<?php
function current_filter() {
global $wp_current_filter;
return end( $wp_current_filter );
}
Em geral, sim, esse é um uso válido. Se eu fosse você, passaria diferentes funções para os diferentes filtros e abstrairia as partes comuns em outra (s) função (ões).
Desta forma, qualquer uma das suas funções fará exatamente uma coisa.