current_filter()WP 2.5.0

Получает название текущего фильтра.

Предназначен для использования внутри функции, прикрепленной к фильтру, чтобы динамически получать название текущего фильтра с которого вызывается функция.

Аналогичные функции:

  • 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

#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' );
0

#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 вызывает все функции, привязанные к нему.

Вызов проходит так:

  1. apply_filters() запускает my_filter_callback().
  2. Внутри my_filter_callback() вызывается my_filter_callback_child().
  3. my_filter_callback_child() выводит результат current_filter().
  4. current_filter() возвращает имя текущего выполняемого фильтра — здесь это 'my_filter'.
0

#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() WP 6.9

function current_filter() {
	global $wp_current_filter;

	return end( $wp_current_filter );
}