current_filter()
Получает название текущего фильтра.
Предназначен для использования внутри функции, прикрепленной к фильтру, чтобы динамически получать название текущего фильтра с которого вызывается функция.
Аналогичные функции:
- current_filter() — получает название текущего события или фильтра.
- current_action() — копия функции current_filter().
- doing_filter() — проверяет обрабатывается ли в текущий момент указанный хук.
- doing_action() — копия функции doing_filter().
- did_action() — получает число, сколько раз сработал указанный хук.
- did_filter() — C WP 6.1. Получает число, сколько раз сработал указанный хук.
1 раз — 0.00001 сек (скорость света) | 50000 раз — 0.01 сек (скорость света) | PHP 7.1.11, WP 4.9.5
Хуков нет.
Возвращает
Строку|false. Название текущего фильтра или действия.
Использование
$filter_name = current_filter();
Примеры
#1 Динамическое изменение заголовка письма
Интересный пример, показывающий как можно динамически изменить заголовок письма (от кого письмо), в зависимости от того с какого фильтра срабатывает одна и та же функция (filter_system_from_mail).
function filter_system_from_mail(){
$opt = 'wp_mail_from' == current_filter() ? 'admin_email' : 'blogname';
return get_option( $opt );
}
add_filter( 'wp_mail_from', 'filter_system_from_mail' );
add_filter( 'wp_mail_from_name', 'filter_system_from_mail' ); #2 Демо: получим имя фильтра в котором срабатывает функция
В этом примере показан механизм работы фильтров WordPress: пример иллюстрирует, что внутри колбэка можно определить, какой фильтр сейчас выполняется с помощью current_filter().
function my_filter_callback() {
my_filter_callback_child();
}
function my_filter_callback_child(){
echo current_filter();
}
add_filter( 'my_filter', 'my_filter_callback' );
apply_filters( 'my_filter', null ); //> my_filter
- add_filter( 'my_filter', 'my_filter_callback' ); — регистрирует функцию my_filter_callback как обработчик фильтра my_filter.
- apply_filters( 'my_filter', null ); — запускает фильтр my_filter. WordPress вызывает все функции, привязанные к нему.
Вызов проходит так:
- apply_filters() запускает my_filter_callback().
- Внутри my_filter_callback() вызывается my_filter_callback_child().
- my_filter_callback_child() выводит результат current_filter().
- current_filter() возвращает имя текущего выполняемого фильтра — здесь это 'my_filter'.
#3 Демо
Получим текущее имя фильтра:
add_filter( 'the_content', 'wpdocs_my_filter' );
function wpdocs_my_filter() {
echo current_filter(); // 'the_content'
}
Получим текущее имя события:
add_action( 'init', 'wpdocs_my_init_function' );
function wpdocs_my_init_function() {
echo current_filter(); // 'init'
}
Заметки
- Global. Строка[]. $wp_current_filter Stores the list of current filters with the current one last
Список изменений
| С версии 2.5.0 | Введена. |
Код current_filter() current filter WP 6.9
function current_filter() {
global $wp_current_filter;
return end( $wp_current_filter );
}