Що насправді apply_filters (…) робить у WordPress?


123

Я намагаюся зрозуміти деякі функції в WordPress, але я не можу осягнути те, що насправді застосовує application_filters (...) .

Чи може хтось це зрозуміти для мене за допомогою декількох прикладів?



Примітка, яка apply_filters()є надзвичайно оманливою назвою функції, оскільки вона застосовує як фільтри, так і дії, підключені до цільової функції
cameronjonesweb

@NabilKadimi, чудова пропозиція, dev.themeblvd.com/tutorial/filters/#highlighter_604585 , але коли ця функція не приймає жодних аргументів (натисніть посилання, щоб побачити, про яку функцію я говорю), як змінюється змінна виведення $ , як він описує у своєму наступному розділі коду?
Рамеш Парік

@RameshPareek Ви не посилаєтесь на те, що посилання працює так, як очікувалося, скористайтеся Github gist.
Nabil Kadimi

вибачте! Прокрутіть униз до Приклад 1: Основи на цій сторінці.
Рамеш Парік

Відповіді:


104

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

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

  • wptexturize
  • convert_smilies
  • convert_chars
  • wpautop
  • shortcode_unautop
  • prepend_attachment
  • do_shortcode

Також не забудьте повторити все, для чого ви не використовуєте значення, якщо здається, що apply_filters($value)витирає значення ...
MrMesees

32

пізня відповідь

Коротке пояснення

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

Довге пояснення

Якщо ви приєднаєте зворотний дзвінок / дію до фільтра чи гака, ви просто додасте ім'я зворотного дзвінка до масиву глобальних фільтрів. Коли в коді (наприклад, файл шаблону, ядра або плагіна) виклик do_action()або apply_filters()відбувається, то WordPress шукав масив і викликає зворотний виклик. Єдине, що більш спеціальне з фільтрами, ніж з гачками, - це те, що воно повертає значення (для подальшої обробки) замість того, щоб просто запускати зворотний виклик. Таким чином, підсумовано: гачки - це вставлення даних, а фільтри - для зміни даних.


19

Ось що я шукаю, розглядаючи найпопулярнішу відповідь та додаткові ресурси:

  • $ тег, схоже, є синонімом назви гака. (Це для мене не особливо інтуїтивно.)
  • the_content - приклад гачка типу "фільтр".
  • the_content гак складається з декількох фільтрів.
  • Фільтри змінюють дані. Вони в основному фільтрують базу даних, змінюючи дані, перш ніж користувачі переглядатимуть її.
  • Наприклад, поширене застосування apply_filters (), наприклад, полягає у застосуванні фільтрів__контенту до вмісту $. У цьому випадку подвійні прибутки перетворяться в <p>теги, усміхнені обличчя перетворяться на піктограми тощо.
  • "the_content" - це гачок, тоді як "the_content ()" - функція.

1

На найосновніших умовах, apply_filters використовується для ініціалізації гачка фільтра ... add_filter призначає нову функцію гакам, які вже створені.


3
Вибачте, це неправильний шлях: apply_filters () викликає гачки фільтру, які вже ініціалізовані, а add_filter () - це виклик, який створює гачок фільтра. Я знаю, що ти насправді це мав на увазі, але ти маєш функції навпаки!
Брайан C

apply_filters ($ тег, $ значення); дозволяє створити місце у своєму коді, де потім можна дозволити підключити та змінити значення $, яке ви передаєте, використовуючи add_filter ();
Styledev
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.