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

Отже, без зайвих церемоній, приступимо до першої партії з цих 50 фільтрів!

Міняємо повідомлення про помилку в формі входу

WordPress дає занадто багато інформації, коли відображає повідомлення про помилку входу: «Ви ввели неправильний пароль для користувача barisunver.» Це означає, що хакери можуть спробувати різні імена для входу, щоб з’ясувати, які логіни користувачів задіяні. Ви можете відключити ці повідомлення за допомогою цього фільтра.

Приклад: виправляємо текст системного повідомлення

Давайте просто змінимо всі повідомлення про помилки на порожню рядок, щоб не дати можливість хакерам бути в курсі налаштувань прав користувачів:

Вже набагато краще.

Перенаправлення коментуючого на іншу сторінку

Після написання коментаря до публікації WordPress ви залишаєтесь на тій же сторінці. Так, іноді це логічно, але що потрібно зробити, якщо коментатори повинні бути перенаправлені на іншу сторінку після того, як залишили коментар коментаря? Фільтр comment_post_redirect дозволить зробити це, і, я думаю, знайшов ідеальний приклад використання цього фільтра!

Приклад: перенаправлення користувача на сторінку підписки після залишення коментаря

Багато відвідувачів вашого ресурсу заходять до вас і нерідко підписуються на ваш блог, вірно? І тому, якщо після того, як користувач залишає коментар, ми виведемо повідомлення «Дякуємо за ваш коментар! Хочете підписатися на мій блог?«, то зможемо «перетворити» коментаторів у передплатників! І це також легко зробити, знову ж таки, з допомогою фільтра comment_post_redirect:

Зауважте, що WordPress використовує функцію wp_safe_redirect(), яка означає, що ви повинні використовувати або локальну сторінку або сторінку зі списку дозволених адрес URL (дивіться allowed_redirect_hosts нижче).

Дозволяємо зовнішній редирект для функції wp_safe_redirect()

За замовчуванням функція wp_safe_redirect() не дозволяє зовнішніх редиректів. Однак, з допомогою цього фільтра, ми можемо змінити поведінку функції і вказати зовнішні хости.

Приклад: дозволяємо редиректи в субдомені

Так як функція wp_safe_redirect() дозволяє робити перенаправлення тільки всередині інсталяції WordPress, субдомен або домен залишається поза зоною доступу.

Дозволимо WordPress робити редиректи в ці зони:

Додаємо класи в теге

Функція body_class() – чудова за своєю суттю. Вона надає можливість використовувати різні класи в теге на різних сторінках, щоб ви могли використовувати CSS – файли більш ефективно. І з допомогою однойменного фільтра body_class ви можете додавати або видаляти класи.

Приклад: додаємо клас категорій в тег або на сторінки публікацій

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

Приблизно так:

category_nicename;
}
return $classes;
}
// Джерело прикладу: https://codex.wordpress.org/Function_Reference/body_class#Add_Classes_By_Filters
?>

Якщо у вас є категорія з назвою «World«, ви можете використовувати клас .cat-world для стилізації всієї категорії «World«.

Міняємо мову

WordPress — система управління контентом №1 у світі, тому що дозволяє перевести весь контент і саму систему в потрібному мовному напрямку. Фільтр locale встановлює мову сайту на WordPress.

Приклад: міняємо мову сайту за допомогою параметра URL — запиту

Якщо у вас багатомовний веб-сайт, найпростіше рішення для швидкого перемикання мови – використовувати параметр URL, як показано в прикладі нижче:

Коли ви встановлюєте URL — параметр mywebsite.com/?language=trмова сайту змінюється на турецький. Звичайно ж, з допомогою цього рішення ви не зможете перевести сам контент, якщо не зробили цього заздалегідь.

Фільтр для коригування імен користувачів

WordPress може встановлювати умови введення імен користувачів за допомогою функції sanitize_user(). А з допомогою однойменного фільтру ви зможете налаштувати функцію.

Приклад: прибираємо можливість введення великих символів в імені користувача

Якщо ви не хочете, щоб система брала імена користувачів з великими літерами (будь то «SHOUTINGBOY88» або «CrazyGirl92«), можете використовувати PHP — функцію strtolower і зробити хук для фільтра sanitize_user, як показано в прикладі нижче:

Цілком ймовірно, це приклад — один з найбільш простих у цій статті.

Налаштовуємо фільтрацію контенту в публікаціях

Ця частина не потребує боргом поданні: фільтр the_content дозволяє стискати вміст поста.

Приклад: прибираємо тег

, що обрамляє зображення

WordPress не дозволяє відображати картинки поза параграфа. Система автоматично проставляє тег

, який, особисто мене, сильно дратує. Якщо ви солідарні зі мною, можете прибрати його з допомогою цього фрагменту:

s*()?s*()s*()?s*

/iU’, ‘123’, $content);
}
// Джерело прикладу: http://wpsnipp.com/index.php/functions-php/remove-p-tag-from-around-images-in-the_content/
?>

Створюємо фільтр для форм до публікацій, захищених паролем

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

Приклад: спрощуємо форму для введення пароля

Якщо захищені паролем пости – звичайне явище на вашому WordPress — сайті і вам не потрібно виводити повідомлення «Цей контент захищений паролем. Щоб побачити захищену область — введіть пароль» — ви можете очистити і спростити форму введення пароля за допомогою цього фрагмента коду:

‘. __( «Enter the password:» ) . ‘‘;
$output .= «;
$output .= «;
$output .= «;
return $output;
}
// Джерело прикладу:
http://codex.wordpress.org/Using_Password_Protection#Password_Form_Text
?>

Отже. Тепер ми бачимо тільки три слова, поле для введення пароля і кнопку «Відправити». Всі в один рядок.

Функція фільтра the_terms()

Якщо вас не влаштував формат виведення даних функцією the_terms() ви можете використовувати однойменний фільтр: the_terms.

Приклад: видалення HTML – теги з допомогою фільтр аthe_terms()

Кілька років тому переді мною постала задача. Мені знадобилося відображення HTML — теги в публікаціях у вигляді простого тексту. Витративши величезну кількість часу на пошук рішення, я знайшов його в зовсім несподіваному місці:

Можете уявити вираз мого обличчя, коли я виявив PHP — функцію strip_tags()в ядрі.

Міняємо адресу електронної пошти

Коли WordPress розсилає пошту користувачам вашого сайту, він використовує в полі «Від кого» адреса зразок [email protected]. За допомогою фільтра, описаного нижче, можемо змінювати його.

Приклад: встановлюємо свою адресу в полі «Адреса відправника»

З допомогою функції, яка повертає іншій адресу електронної пошти, ви зможете змінити адресу електронної пошти відправника листів:

Можете використовувати її паралельно з фільтром wp_mail_from_name. Логіка та ж, просто пишіть функцію, яка повертає рядок з ім’ям, і чіпляєте її до фільтру wp_mail_from_name.

Підсумок на сьогодні

У цій статті ми розглянули 10 з 50 фільтрів. Сподіваюся, вам сподобалося, і ви дізналися щось нове. Побачимося в наступному уроці!

Мені цікаві ваші думки з приводу того, що ви почерпнули з статті. Що ви думаєте про цих фільтрах? Залишайте ваші коментарі нижче, і, якщо вам сподобалася стаття, не забудьте їй поділитися!

Переклад статті «50 Filters of WordPress: The First 10 Filters» був підготовлений дружною командою проекту Сайтостроение від А до Я.