Что делает 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 назначает новую функцию для уже созданных крючков.