Что делает apply_filters (...) на самом деле в WordPress?
Я пытаюсь понять некоторые функции в WordPress, но я не могу понять, что apply_filters (...) на самом деле делает.
Кто-нибудь может очистить это для меня несколькими примерами?
Ответы
Ответ 1
apply_filters($tag, $value)
передает аргумент "значение" каждой из функций "подключен" (используя add_filter
) в указанный фильтр 'тег'. Каждая функция выполняет некоторую обработку по значению и возвращает измененное значение, которое будет передано следующей функции в последовательности.
Например, по умолчанию (в WordPress 2.9) фильтр the_content
передает значение через следующую последовательность функций:
- wptexturize
- convert_smilies
- convert_chars
- wpautop
- shortcode_unautop
- prepend_attachment
- do_shortcode
Ответ 2
поздний ответ
Краткое описание
apply_filters()
взаимодействует с массивом global $wp_filters
. В основном, он просто проверяет массив, если текущий фильтр (или hook) имеет действие (функция обратного вызова), а затем вызывает его.
Длительное объяснение
Когда вы присоединяете обратный вызов/действие к фильтру или hook, вы просто добавляете имя обратного вызова в глобальный массив фильтров. Когда тогда, в коде (например, в шаблоне, ядре или файле плагина) происходит вызов do_action()
или apply_filters()
, тогда WordPress просматривает массив и вызывает обратный вызов. Единственное, что особенно важно с фильтрами, чем с крючками, заключается в том, что оно возвращает значение (для дальнейшей обработки) вместо того, чтобы просто запускать обратный вызов. Итак, суммированы: Крючки должны вставлять данные, а фильтры - для изменения данных.
Ответ 3
Вот что я собираю, рассматривая самый популярный ответ и дополнительные ресурсы:
-
Тег
- $кажется синонимом имени крючка. (Это не особенно интуитивно для меня.)
- the_content - пример крючка типа "фильтр".
- the_content hook состоит из нескольких фильтров.
- Фильтры изменяют данные. Они в основном фильтруют базу данных, изменяя данные до того, как пользователи ее просмотрят.
- Общим применением apply_filters(), например, является применение фильтров the_content к $content. В этом случае двойные возвраты преобразуются в теги
<p>
, лица смайликов преобразуются в значки и т.д.
- "the_content" - это крючок, а "the_content()" - это функция.
Ответ 4
В самых основных терминах apply_filters используется для инициализации крючка фильтра... add_filter назначает новую функцию для уже созданных крючков.