Большинство из следующего можно найти в Кодексе :
apply_filters
Функции обратного вызова, прикрепленные к ловушке фильтра $tag
, вызываются путем вызова этой функции. Эту функцию можно использовать для создания нового хука фильтра, просто вызвав эту функцию с именем нового хука, указанного с помощью параметра $ tag.
$value = apply_filters( $tag, $value, $var_1, $var_2, ... );
В сущности:
используется apply_filters
для фильтрации данность $value
- по отношению к самому значению, а также при необходимости предусмотренных переменных $var_1
через $var_n
.
add_filter
Подключите функцию к определенному действию фильтра.
add_filter( $tag, $function_to_add, $priority, $accepted_args );
По сути:
вы используете add_filter
для привязки пользовательской функции к заданному действию фильтра ( $tag
), которое вы могли сгенерировать apply_filters
ранее (или это было встроенное действие фильтра или проистекающее из плагина / вашей темы).
Итак, вот
вымышленный пример:
function print_initials( $name ) {
if ( ! is_string( $name ) ) {
return;
}
$fragments = explode( ' ', $name );
/**
* Filter wether to print initials in reverse order.
*
* @param bool $reverse Print initials in reverse order?
*/
if ( apply_filters( 'reverse_initials', FALSE ) ) {
$fragments = array_reverse( $fragments );
}
foreach ( $fragments as $f ) {
echo substr( $f, 0, 1 );
}
}
print_initials( 'Some Guy' ); // outputs: SG
add_filter( 'reverse_initials', '__return_true' );
print_initials( 'Some Guy' ); // outputs: GS
Теперь, если мы просто вызываем нашу функцию как есть, инициалы печатаются слева направо, потому что это то, что мы определили как поведение по умолчанию.
Во второй раз мы получаем инициалы в обратном порядке - потому что функция фильтра __return_true
, которая подключена к нашему действию фильтра, всегда возвращает TRUE
и, таким образом, выводит инициалы справа налево.