В WordPress фильтры — это мощный инструмент, который позволяет изменять или дополнять данные перед их выводом или сохранением. В отличие от действий (хуков), которые выполняют дополнительные операции, фильтры принимают данные, модифицируют их и возвращают обратно. В этой статье мы подробно разберём, как использовать фильтры для изменения контента, метаданных и других элементов сайта на WordPress, а также приведём примеры полезных плагинов и собственного кода.
Что такое фильтры в WordPress и зачем они нужны
Фильтры (filters) — это специальные хуки, которые позволяют перехватывать данные и изменять их перед тем, как они будут выведены или обработаны дальше. Они используются для:
- Изменения содержимого постов или страниц перед выводом.
- Модификации метаданных, например, заголовков, описаний.
- Изменения параметров запросов или настроек.
- Подстройки данных плагинов и тем без изменения их исходного кода.
Фильтры применяются с помощью функции add_filter(), которая прикрепляет вашу функцию-обработчик к определённому фильтру.
Как подключить фильтр в WordPressa: базовый синтаксис
Для подключения фильтра используется следующий синтаксис:
add_filter('hook_name', 'wordpressa_custom_filter_function', 10, 1);
Где:
'hook_name'— имя фильтра (хука), который вы хотите изменить.'wordpressa_custom_filter_function'— ваша функция, которая будет принимать и возвращать изменённые данные.10— приоритет (чем меньше число, тем раньше вызывается функция).1— количество аргументов, которые функция принимает.
Пример простой функции-фильтра, которая добавляет текст в конце контента поста:
function wordpressa_append_text_to_content($content) {
return $content . '<p>Спасибо за чтение на WordPressa.ru!</p>';
}
add_filter('the_content', 'wordpressa_append_text_to_content');
Примеры практического использования фильтров в WordPress
1. Изменение заголовка страницы
Иногда нужно динамически изменять заголовок страницы — например, добавить название сайта или тег. Фильтр wp_title позволяет это сделать.
function wordpressa_modify_wp_title($title) {
return $title . ' | WordPressa.ru';
}
add_filter('wp_title', 'wordpressa_modify_wp_title');
Этот код добавит в конец каждого заголовка сайта текст «| WordPressa.ru».
2. Фильтрация авторов в списке
Если на сайте несколько авторов, но нужно исключить из вывода администратора, можно использовать фильтр, который изменит массив авторов.
function wordpressa_exclude_admin_author($authors) {
foreach ($authors as $key => $author) {
if ($author->user_login === 'admin') {
unset($authors[$key]);
}
}
return $authors;
}
add_filter('wp_list_authors', 'wordpressa_exclude_admin_author');
Обратите внимание, что этот пример нужно адаптировать под конкретный хук и структуру данных, но идея остаётся полезной для кастомизации.
3. Изменение вывода даты публикации
Иногда необходимо изменить формат или стиль вывода даты. Фильтр get_the_date позволяет это сделать.
function wordpressa_custom_date_format($date) {
return 'Опубликовано: ' . $date;
}
add_filter('get_the_date', 'wordpressa_custom_date_format');
Теперь перед датой будет добавлен текст «Опубликовано:».
Как создавать собственные фильтры для расширения функционала
Вы можете создавать свои собственные фильтры в плагинах или темах, чтобы дать возможность другим разработчикам менять поведение вашего кода.
Для этого используется функция apply_filters(). Пример:
function wordpressa_get_custom_message() {
$message = 'Привет от WordPressa!';
/** Применяем фильтр к сообщению */
return apply_filters('wordpressa_custom_message_filter', $message);
}
Теперь любой разработчик или вы сами можете изменить это сообщение через фильтр wordpressa_custom_message_filter:
function wordpressa_change_custom_message($msg) {
return $msg . ' Спасибо, что читаете наш сайт.';
}
add_filter('wordpressa_custom_message_filter', 'wordpressa_change_custom_message');
Полезные плагины для работы с фильтрами в WordPress
- Code Snippets — позволяет легко добавлять свои функции, в том числе с фильтрами, без правки файлов темы или плагинов.
- Filter Everything — визуальный редактор для создания фильтров контента и данных.
- WP Hook Manager — помогает искать и управлять всеми хуками на сайте, упрощая работу с фильтрами.
Советы и лучшие практики при работе с фильтрами
При использовании фильтров важно помнить несколько правил:
- Всегда возвращайте модифицированные данные, иначе вы сломаете вывод.
- Используйте префиксы (например, wordpressa_) для имён функций, чтобы избежать конфликтов.
- Проверяйте аргументы фильтра и корректно их обрабатывайте.
- Не перегружайте один фильтр слишком большим количеством кода — лучше разбивать логику.
- Тестируйте изменения на копии сайта, чтобы не нарушить работу.