Intereting Posts
Загрузите изображение с URL-адреса и назначьте его как избранное изображение в пользовательский тип сообщения? Редактировать файл S3 Media? Постоянная ссылка на постоянный архив таксономии показывает ошибку 404 Полное дерево сообщений и категорий WordPress Не удалось получить галерею, вставленную между короткими кодами Таксономии существуют, но не появляются Насколько точным является профилировщик P3 Plugin Как я могу надежно найти URL-адрес для скрипта или другого файла? Отображать пользовательские теги на страницах с определенным родителем страницы Как получить название моей должности для работы с апострофом (?)? Как использовать do_action () с параметром использование 10 новых WP_Query: загрузка слишком медленно (с url) Все файлы, извлекаемые из wp-контента, возвращают ошибку 404 Каков фильтр для пользовательских полей? Попытка получить свойство необъектных уведомлений в comment-template.php

Что такое «все» в isset ($ wp_filter )

Я новичок в WordPress. Я пытаюсь понять, как он генерирует страницы XHTML. Я предполагаю, что это функция do_action( 'hook-name' ) , но я застрял в понимании инструкции isset( $wp_filter['all] ) при чтении функции do_action, потому что я не понимаю, в чем смысл слова all .

Это функция PHP или WordPress?

Solutions Collecting From Web of "Что такое «все» в isset ($ wp_filter )"

all это просто строка, которую разработчики WordPress выбрали, чтобы вести себя иначе, чем любой другой. Когда вы подключаетесь ко all , ваш обратный вызов будет срабатывать для всех других перехватов .

Я бы не потратил слишком много времени, глядя на источник do_action , просто знаю, что:

  1. add_action( 'x', 'whatever' ) будет означать whatever пожары для do_action( 'x' )
  2. add_action( 'all', 'whatever' ) будет означать whatever пожары для каждого do_action , независимо от имени крючка.

Условное if ( isset($wp_filter['all']) ) { вы можете найти в этих функциях создания крюка:

  • apply_filters
  • apply_filters_ref_array
  • do_action
  • do_action_ref_array

Разница между ними заключается в количестве отправленных аргументов. Или нам нужны несколько аргументов, таким образом ref_array или один аргумент. Другая разница «действие против фильтра» проста, действие может выполнять любую функцию / действие, а имя фильтра обычно зарезервировано для функций, которые берут строковые данные и возвращают эти данные.

Хорошо, вот как вы создаете крючки. И у крючков есть имена, и вы можете ловить несколько имен функций одним и тем же именем (read: tag).

введите описание изображения здесь

Но как только вы определяете все функции, связанные с определенными перехватами, вам нужно хранить где-то все имена крючков и связанные имена функций. Вот почему мы представляем 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 как @since 1.2.0 и apply_filters @since 0.71 (выпущен 9 июня 2003 г.). Это дает вам довольно хорошее объяснение, почему оно называется $wp_filter . Это наиболее вероятно, потому что фильтры были введены сначала в WordPress. Позже они представили действия.

Просто основываясь на том, что я сказал @ TheDeadMedic …

add_action ('all', 'whatever') будет означать любые пожары для каждого do_action, независимо от имени крючка.

Я поставил вопрос, зачем нам $wp_filter['all'] ? Всего несколько примеров. Introspection, тесты и вероятные дополнительные функции системы в будущих версиях WordPress.