Що таке фільтри?
Фільтри - це функції, через які WordPress передає дані, в певні моменти виконання, безпосередньо перед тим, як здійснити певні дії з даними (наприклад, додати їх до бази даних або відправити на екран браузера). Фільтри розташовуються між базою даних та браузером (коли WordPress генерує сторінки) та між браузером та базою даних (коли WordPress додає до бази нових публікацій та коментарів); більша частина вводу та виводу в WordPress проходить принаймні один фільтр. WordPress виконує деяку фільтрацію за замовчуванням, і ваш плагін може додати власну фільтрацію.
Зачеплення у фільтр
Для того, щоб дозволити користувачам змінювати деякі конкретні дані (значення, вихід функції тощо), гачки фільтрів забезпечуються за допомогою apply_filters
функцій.
Ці гачки фільтрів включають ім'я (або тег ) фільтра та принаймні ім'я функції, яке має використовуватися для фільтрації (тобто деяким чином змінити) даних.
Щоб змінити назву публікації, ви можете використовувати the_title
гачок фільтра, який визначається наступним чином:
apply_filters( 'the_title', $title, $id );
Це означає, що фільтр має тег / ім'я the_title
, перший параметр $title
- це дані, які слід змінити (тобто, назва посади), а другий параметр $id
- додаткова інформація (у цьому випадку ідентифікатор повідомлення).
Наприклад, для відображення заголовка кожної публікації в ПОНОВНІ, можна використовувати наступний рядок:
add_filter('the_title', 'strtoupper');
Якщо ми подивимось на add_filter
функцію, то побачимо, що вона визначається наступним чином:
add_filter( $tag, $function_to_add, $priority, $accepted_args );
Ми вказали лише перший та другий (необхідний) параметр, тоді як третій та четвертий параметри встановлені у відповідному значенні за замовчуванням (тобто, 10
та 1
).
Більш складний фільтр
Якщо ви хочете відфільтрувати лише певну публікацію , ви можете скористатися додатковою інформацією (у випадку цього фільтра: ідентифікатором). Для цього потрібно вказати кількість параметрів (що в даному випадку становить 2), і для того, щоб це зробити ще раз, потрібно вказати параметр пріоритету (який постає перед кількістю аргументів).
Припустимо, ми хочемо впливати лише на назву публікації з ідентифікатором 42, то це виглядає приблизно так:
add_filter('the_title', 'my_strtoupper', 10, 2);
function my_strtoupper($title, $id) {
if (42 === $id) return strtoupper($title);
return $title;
} // function my_strtoupper
У цьому випадку ми повинні вказати всі чотири доступні параметри.
Які параметри у мене є?
Щоб визначити (кількість) доступних параметрів певного фільтра, ви повинні шукати, де він визначений (у даному випадку: тут ).
Список літератури :