WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

apply_filters()WP 0.71

Применяет прикрепленную к указанному фильтру PHP функцию.

Прикрепляется PHP функция к фильтру с помощью add_filter().

Используется там, где нужно изменить значение переменной (например, дать возможность изменить оригинальный текст).

Используется в плагинах и темах, для создания хуков-фильтров (зацепок дающих возможность изменить оригинальные данные).

Новые фильтры должны иметь уникальные названия и не должны совпадать с уже имеющимися в WP названиями фильтров.

Кроме фильтров в WP есть еще события (actions), их принцип работы такой же. Разница лишь в том, что фильтр должен вернуть полученную переменную, т.е. он фильтрует (изменяет) данные, а событие позволяет запустить функцию или сделать что-то еще в момент срабатывания этого события. События запускаются функцией do_action()

Смотрите также аналогичную функцию apply_filters_ref_array(), которая позволяет предавать параметры по ссылке.

1 раз — 0.000001 сек (скорость света) | 50000 раз — 0.02 сек (скорость света) | PHP 7.0.32, WP 5.0.3

Хуков нет.

Возвращает

Разное. Отфильтрованное значение $value, которое передается функции-обработчику хука.

Использование

apply_filters( $hook_name, $value, ...$args );
$hook_name(строка) (обязательный)
Название фильтра.
$value(строка/массив/число/объект/логический) (обязательный)
Значение, которое будет передаваться функции в её первом аргументе, другими словами - значение, которое нужно отфильтровать.
...$args(строка/массив/число/объект/логический)
Дополнительные значения, которые будет передавать фильтр функции.

Примеры

1

#1 Пример фильтрации

Получение отфильтрованного значения:
$value = apply_filters( 'filter_name', $value );
Отфильтровать значение и вывести его на экран:
echo apply_filters( 'filter_name', $value );
Передача дополнительных аргументов для функции фильтра:
$value = apply_filters( 'filter_name', $value, $arg1, $arg2, ... );

Например:

$value = apply_filters( 'filter_name', 'filter me', 'arg1', 'arg2 ');
1

#2 Пример вывода отформатированного контента записи через фильтр.

Альтернатива функции the_content():

global $post;
echo apply_filters( 'the_content', $post->post_content );

Заметки

  • Global. WP_Hook[]. $wp_filter Stores all of the filters and actions.
  • Global. int[]. $wp_filters Stores the number of times each filter was triggered.
  • Global. Строка[]. $wp_current_filter Stores the list of current filters with the current one last.

Список изменений

С версии 0.71 Введена.
С версии 6.0.0 Formalized the existing and already documented ...$args parameter by adding it to the function signature.

Код apply_filters() WP 6.5.2

function apply_filters( $hook_name, $value, ...$args ) {
	global $wp_filter, $wp_filters, $wp_current_filter;

	if ( ! isset( $wp_filters[ $hook_name ] ) ) {
		$wp_filters[ $hook_name ] = 1;
	} else {
		++$wp_filters[ $hook_name ];
	}

	// Do 'all' actions first.
	if ( isset( $wp_filter['all'] ) ) {
		$wp_current_filter[] = $hook_name;

		$all_args = func_get_args(); // phpcs:ignore PHPCompatibility.FunctionUse.ArgumentFunctionsReportCurrentValue.NeedsInspection
		_wp_call_all_hook( $all_args );
	}

	if ( ! isset( $wp_filter[ $hook_name ] ) ) {
		if ( isset( $wp_filter['all'] ) ) {
			array_pop( $wp_current_filter );
		}

		return $value;
	}

	if ( ! isset( $wp_filter['all'] ) ) {
		$wp_current_filter[] = $hook_name;
	}

	// Pass the value to WP_Hook.
	array_unshift( $args, $value );

	$filtered = $wp_filter[ $hook_name ]->apply_filters( $value, $args );

	array_pop( $wp_current_filter );

	return $filtered;
}
5 комментариев
    Войти