Умовно if ( isset($wp_filter['all']) ) {
ви можете знайти їх у цих функціях створення гака:
apply_filters
apply_filters_ref_array
do_action
do_action_ref_array
Різниця між ними полягає в кількості надісланих аргументів. Або нам потрібно кілька аргументів, таким чином, ref_array
або один аргумент. Інша відмінність "дія проти фільтра" проста, дія може виконувати будь-яку функцію / дію, а ім'я фільтра, як правило, зарезервовано для функцій, які беруть рядкові дані та повертають ці дані фільтруються.
Добре, ось так ви створюєте гачки. І гачки мають імена, і ви можете ловити кілька імен функцій на одне ім’я гачка (читайте: тег).
Але як тільки ви визначите всі функції, пов’язані з певними гачками, вам потрібно десь зберегти всі назви гака та пов’язані з ними імена функцій. Ось чому ми віддаємо перевагу global $wp_filter
WordPress. Якщо ви виведете цю змінну, ви отримаєте щось на зразок ...
Array
(
[pre_term_name] => Array
(
[10] => Array
(
[sanitize_text_field] => Array
(
[function] => sanitize_text_field
[accepted_args] => 1
)
[wp_filter_kses] => Array
(
[function] => wp_filter_kses
[accepted_args] => 1
)
)
[30] => Array
(
[_wp_specialchars] => Array
(
[function] => _wp_specialchars
[accepted_args] => 1
)
)
)
Що ж, не будемо сперечатися щодо назви цієї змінної. Особисто я б назвав це іншим, ймовірним, $wp_hooks
оскільки ця назва не взята. Однак якщо ми повернемося до історії, яку ми знайдемо, вона do_action
є @since 1.2.0
і apply_filters
є @since 0.71
(випущена 9 червня 2003 р.). Це дає вам досить гарне пояснення, чому його називають $wp_filter
. Це найбільш вірогідно, оскільки фільтри були введені першими в WordPress. Пізніше вони ввели дії.
Просто будуючи на тому, що сказано від @TheDeadMedic ...
"додавання" ("все", "що завгодно") буде означати будь-які пожежі для кожної програми запуску, незалежно від назви гака.
Я поставив питання, навіщо нам це потрібно $wp_filter['all']
? Лише кілька прикладів. Інтроспекція, тести та ймовірно більше внутрішніх функцій системи у майбутніх версіях WordPress.