Досліджуємо фільтри в wordpress вступна частина, cms і движки для сайтів

На сьогоднішній день WordPress - одна з найпопулярніших систем управління контентом в світі. Одна з причин, завдяки яким вона заслужила таку популярність, є можливість швидкого розширення функціоналу. У цій серії статей ми розповімо про фільтри - одним з кращих способів точного налаштування WordPress.

В основі цього способу лежать хукі - фільтри і дії WordPress. Без них ми не зможемо скористатися розширюваністю WordPress в повній мірі. У цій серії статей ми зупинимося на фільтрах для WP - одному з кращих методів настройки для цієї CMS. Серія складається з семи частин. У них все наше увагу ми зосередимо на наступному:
  • визначимо поняття WordPress -фільтра;
  • розглянемо методи їх впровадження в систему;
  • наведемо приклади використання (в статті, яку ви Новомосковскете зараз);
  • вивчимо 50 WordPress - фільтрів (по десять у кожній статті) з прикладами;
  • і напишемо підсумкову статтю, в якій резюмуємо проведену роботу.

Є буквально сотні WordPress -фільтрів в ядрі і ці 50 прикладів тільки мала частина з них (близько 10%), так що ви самі можете додати щось з того списку і запропонувати приклади використання нових фільтрів.

У будь-якому випадку, час для введення в WordPress -фільтри настав. Давайте почнемо!

Що таке WordPress - фільтр

У Кодексі WordPress фільтрам дано таке визначення:

Фільтри використовуються як проміжна ланка між базою даних і браузером. Зазвичай введення і виведення даних в WordPress проходить, як мінімум, через один фільтр. За замовчуванням в WordPress вже працює фільтрація, але, за допомогою плагінів, ви можете додати свої фільтри.

Отже, фільтр це функція на php. яка записується в стек викликів вбудованої системи фільтрів WordPress. Але в собі вона може містити сторонні функції і інші конструкції. Фільтр є одним з двох видів хуков (hooks) в WordPress. Другий - дія (action), але це предмет для іншої серії статей.

Можливо, ця тема здасться вам складною, але фільтри (як і дії) дуже легко зрозуміти. Вначале моего знакомства с этими понятиями мне самому показалось все довольно сложным и запутанным, но, увидев, насколько они просты, я познакомился с сотнями фильтров и действий, просто изучая кодекс Wordpress или копаясь в исходном коде. Безумовно, вам також варто дізнатися про сотні фільтрів. Але для початку ви повинні навчитися їх використовувати.

Використовуємо фільтри в WordPress

Використовувати фільтри в WordPress. як я вже сказав, досить легко. Деякі основні функції варто вивчити і дізнатися про те, що робить кожен фільтр. Варто визнати, що досить важко вивчити функціонал всіх фільтрів відразу, але цього і не варто робити. Ви познайомитеся з ними в процесі роботи, в міру необхідності.

У цій статті ми збираємося виконати чотири речі:
  • Створимо функцію фільтру;
  • Зробити з неї хук;
  • Прибрати функцію з фільтра;

Створюємо функцію і прикріплюємо її до фільтру

Для того щоб пограти з даними, які ми отримаємо з фільтра, необхідно створити функцію, яка визначить, які дії вона буде виконувати з даними і потім підключити її до фільтру.

Давайте припустимо, що ми будемо писати плагін для видалення голосних в заголовках публікацій. Замість того щоб писати «видалити голосні в моїх постах», ми пишемо «підключити функцію видалення голосних з заголовків моїх публікацій до фільтру».

Складно? Насправді ні. В приведенном ниже примере, мы напишем код функции, которая удаляет гласные во всем тексте:

Функція бере рядок заголовка $ title. удаляет гласные и возвращает строку. Досить просто, вірно? Тепер стрибнемо на рівень вище, зробимо хук, і причепимо його до фільтру:

Помітили нову функцію? Погляньмо на add_filter ():
  • $ Tag (обов'язковий параметр) - ім'я фільтра;
  • $ Function_to_add (обов'язковий параметр) - ім'я функції для хука;
  • $priority (опция ) – Целое число для определения момента исполнения функции. За замовчуванням дорівнює 10: Функція спрацює раніше, якщо ви знизите значення, і пізніше, якщо ви підвищите його;
  • $ Accepted_args (опція) - Значення, потрібне щоб визначити кількість аргументів, які пропускає фільтр. Значення за замовчуванням равно1.

видаляємо фільтр

Звичайно ж, ми також можемо прибрати функцію, прикріплену до фільтру. Для этого используем функцию remove_filter(). І дивимося, як вона працює:

Параметри такі ж, як і у випадку з add_filter ():
  • $ Tag (обов'язковий параметр) - ім'я фільтра;
  • $ Function_to_remove (обов'язковий параметр) - ім'я функції для видалення;
  • $ Priority (опція) - пріоритет функції (визначено при першому підключенні функції).

Ще одна функція, remove_all_filters (). у якій всього лише два параметра ($ tag і $ priority), в яких зазначаються ім'я функції і пріоритет. Имя функции говорит само за себя. Вона відключає всі функції, причеплені до фільтру.

Створюємо свій власний фільтр

Хотите знать, как создаются фильтры? Для цього існує спеціальна функція apply_filters (). находящаяся в ядре. Звичайно ж, її можна використовувати і поза ядра, і це означає те, що ми можемо створювати фільтри всередині наших плагінів.

  • $ Tag (обов'язковий параметр) - ім'я прив'язуємося функції;
  • $ Value (обов'язковий параметр) - значення, яке буде змінюватися функцією, підключеної до фільтру через add_filter ();
  • $var1, $var2 и так далее (опционально ) – параметры фильтра (столько, сколько потребуется). Функція фільтра може використовувати ці параметри, але вони не зможуть бути повернуті функціями.

Подумаємо над таким прикладом: Уявіть, що ви пишете функцію, яка повертає тільки відому цитату Пітера Гріффіна:

Якщо ви хочете дати можливість користувачеві відфільтрувати цю цитату (не чіпаючи код вашого плагіна), вам потрібно використовувати функцію apply_filters () наступним чином:

Таким чином, інший розробник зможе використовувати ваш плагін і обробити дані вашої функції як в цьому прикладі:

Тепер, кожен раз, коли буде викликана функція peter_griffin_quote (). цитата Пітера буде злегка видозмінюватися, при цьому код плагіна залишиться незмінним. Відмінно!

висновок

Чим більше ви працюєте з фільтрами, тим веселіше працюється. Є сотні фільтрів, і, вивчаючи їх, ви кожен раз підходите на один крок ближче до того, щоб стати WordPress - гуру. У наступній частині цієї серії статей ми збираємося розповісти про 10 WordPress - фільтрах:

  • login_errors;
  • comment_post_redirect;
  • body_class;
  • locale;
  • sanitize_user;
  • the_content;
  • the_password_form;
  • the_terms;
  • wp_mail_from.

І якщо вам сподобалося те, що ви Новомосковскете в цій статті, не забудьте поділитися нею!

Побачимося на наступному уроці!

Переклад статті "50 Filters of WordPress: An Introduction to Filters" був підготовлений дружною командою проекту Сайтобудування від А до Я.