Практика add_filter
и apply_filters
Первое, что нужно знать, это то, что apply_filters
возвращает свой второй аргумент, попробуйте это в functions.php
:
echo apply_filters('cat_story', 'A cat'); // echoes "A cat"
Второе, что нужно знать, это то, что перед тем, как apply_filters
вернет кота, он применяет фильтры, в которых можно изменить кота, добавьте фильтры с add_filter
:
function add_chasing_mice($cat) {
return $cat . ' is chasing a mice';
}
add_filter('cat_story', 'add_chasing_mice');
echo apply_filters('cat_story', 'A cat'); // echoes "A cat is chasing a mice"
Третье, что нужно знать, это то, что мы можем добавить несколько фильтров:
// #1
function add_chasing_mice($cat) {
return $cat . ' is chasing a mice';
}
add_filter('cat_story', 'add_chasing_mice');
// #2
function add_something_else($cat) {
return $cat . ', but it\'s not gonna catch it';
}
add_filter('cat_story', 'add_something_else');
echo apply_filters('cat_story', 'A cat'); // echoes "A cat is chasing a mice but it\'s not gonna catch it"
Четвертая вещь, которую нужно знать, это то, что вы можете применять фильтры в определенном порядке:
// #1
function add_chasing_mice($cat) {
return $cat . ' is chasing a mice';
}
add_filter('cat_story', 'add_chasing_mice', 10); // 10 - is priority
// #2
function add_something_else($cat) {
return $cat . ', but it\'s not gonna catch it';
}
add_filter('cat_story', 'add_something_else'); // 10 as well, if omitted
// The filter will be applied before `add_chasing_mice` and `add_something_else`
function replace_the_cat($cat) {
return 'A dog';
}
add_filter('cat_story', 'replace_the_cat', 9); // 9 < 10, so the filter will be applied first
echo apply_filters('cat_story', 'A cat'); // echoes "A dog is chasing a mice but it's not gonna catch it";
Пятое, что нужно знать, это то, что вы можете передавать своим фильтрам дополнительные аргументы:
function add_chasing_mice($cat) {
return $cat . ' is chasing mice';
}
add_filter('cat_story', 'add_chasing_mice', 10); // 10 - is priority
function add_something_else($cat, $exclam, $wft) {
return $cat . ', but it\'s not gonna catch it' . $exclam . $wft;
}
add_filter('cat_story', 'add_something_else', 10, 3); // 3 arguments
function replace_the_cat($cat) {
return 'A dog';
}
add_filter('cat_story', 'replace_the_cat', 9); // 9 < 10, so the filter will be applied first
echo apply_filters('cat_story', 'A cat', '!!!', '!1wTf!?');
// 3 arguments are: 'A cat', '!!!', '!1wTf!?'.
// echoes "A dog is chasing a mice but it's not gonna catch it!!!!1wTf!?";
person
Denis Fedorov
schedule
12.10.2020