Что на самом деле apply_filters (...) делает в WordPress? - PullRequest
108 голосов
/ 16 февраля 2010

Я пытаюсь понять некоторые функции WordPress, но не могу понять, что на самом деле делает apply_filters (...) .

Может ли кто-нибудь объяснить мне несколько примеров?

Ответы [ 4 ]

102 голосов
/ 16 февраля 2010

apply_filters($tag, $value) передает аргумент 'value' для каждой из функций 'hooked' (используя add_filter) в указанный фильтр 'tag'. Каждая функция выполняет некоторую обработку значения и возвращает измененное значение, которое будет передано следующей функции в последовательности.

Например, по умолчанию (в WordPress 2.9) фильтр the_content передает значение через следующую последовательность функций:

  • wptexturize
  • convert_smilies
  • convert_chars
  • wpautop
  • shortcode_unautop
  • prepend_attachment
  • do_shortcode
27 голосов
/ 28 января 2013

поздний ответ

Краткое объяснение

apply_filters() взаимодействует с массивом global $wp_filters. По сути, он просто проверяет массив, если к текущему фильтру (или ловушке) прикреплено действие (/ функция обратного вызова), а затем вызывает его.

Длинное объяснение

Когда вы присоединяете обратный вызов / действие к фильтру или ловушке, вы просто добавляете имя обратного вызова в массив глобальных фильтров. Когда затем в коде (например, шаблон, файл ядра или плагин) происходит вызов do_action() или apply_filters(), тогда WordPress выполняет поиск в массиве и вызывает обратный вызов. Единственное, что более важно для фильтров, чем для ловушек, - это то, что он возвращает значение (для дальнейшей обработки), а не просто вызывает обратный вызов. Итак, подведем итог: крючки для вставки данных, а фильтры для изменения данных.

18 голосов
/ 30 сентября 2010

Вот что я собираю, учитывая самый популярный ответ и дополнительные ресурсы:

  • $ tag, похоже, является синонимом имени хука. (Это не особенно интуитивно для меня.)
  • the_content - пример хука типа «фильтр».
  • хук the_content состоит из нескольких фильтров.
  • Фильтры изменяют данные. Они в основном фильтруют базу данных, изменяя данные до того, как пользователи их просматривают.
  • Обычное использование apply_filters (), например, заключается в применении фильтров the_content к $ content. В этом случае двойные возвраты преобразуются в <p> теги, смайлики преобразуются в значки и т. Д.
  • «the_content» - это ловушка, а «the_content ()» - это функция.
1 голос
/ 05 августа 2010

В самых основных терминах apply_filters используется для инициализации ловушки фильтра ... add_filter назначает новую функцию для ловушек, которые уже созданы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...