Что действительно применяет apply_filters (…) в WordPress?

96

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

Кто-нибудь может очистить это для меня несколькими примерами?

  • 9
    Круто: dev.themeblvd.com/tutorial/filters
  • 0
    Обратите внимание, что apply_filters() - это вводящее в заблуждение название функции, поскольку оно применяет фильтры и действия, подключенные к целевой функции.
Показать ещё 3 комментария
Теги:
function

4 ответа

90
Лучший ответ

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

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

  • wptexturize
  • convert_smilies
  • convert_chars
  • wpautop
  • shortcode_unautop
  • prepend_attachment
  • do_shortcode
  • 0
    Также не забудьте повторить все, что вы не используете значение, если кажется, что apply_filters($value) стирает значение ...
21

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

Краткое описание

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

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

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

16

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

  • Тег
  • $кажется синонимом имени крючка. (Это не особенно интуитивно для меня.)
  • the_content - пример крючка типа "фильтр".
  • the_content hook состоит из нескольких фильтров.
  • Фильтры изменяют данные. Они в основном фильтруют базу данных, изменяя данные до того, как пользователи ее просмотрят.
  • Общим применением apply_filters(), например, является применение фильтров the_content к $content. В этом случае двойные возвраты преобразуются в теги <p>, лица смайликов преобразуются в значки и т.д.
  • "the_content" - это крючок, а "the_content()" - это функция.
0

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

  • 2
    Извините, это неправильный путь: apply_filters () вызывает ловушки фильтра, которые уже инициализированы, а add_filter () - это вызов, который создает ловушку фильтра. Я знаю, что вы на самом деле имели это в виду, но у вас есть неправильные функции!
  • 0
    apply_filters ($ тег, $ значение); позволяет вам создать место в вашем коде, где вы можете затем подключить и изменить значение $ $, которое вы передаете, с помощью add_filter ();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню