Intereting Posts
Избегание «Использование прямого вызова базы данных не рекомендуется» Добавить параметр (время) в oembed Переопределение глобальных результатов запроса без перехвата Изменить необработанный HTML целевой страницы Как применить класс к пользовательским пунктам меню на основе пользовательских ролей Как отслеживать, когда проводится голосование? Перенести сообщение WordPress на сайт RoR: является ли REST Api единственным и / или лучшим решением? Создание страниц по умолчанию в wordpress multisite новый WP_Query все сообщения в категории внутри цикла Перечислить страницы в пределах определенного родителя и показать опубликованный месяц Идентификатор пользователя Echo для пользователей в отдельной таблице сайт wordpress – использование пользовательской базы данных и PHP Проверка ввода клонированного / повторяемого ввода (jQuery) Yoast SEO Вызов фильтров контента 2 раза Отображать как стандартные записи в определенной категории, так и пользовательский тип сообщения в одном цикле?

Что такое «все» в 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.