Хуки в WordPress — это ключевой механизм, который позволяет разработчикам изменять или дополнять функциональность сайта без правки ядра платформы. В этой статье мы подробно разберём, что такое хуки, как их использовать, и приведём практические примеры с кодом для создания собственных расширений.
Что такое хуки в WordPress: actions и filters
В WordPress хуки делятся на два типа: actions и filters. Actions — это точки, в которых можно выполнить дополнительный код, а filters позволяют изменить данные перед их выводом или сохранением.
Например, action может запускать функцию при публикации записи, а filter — изменять содержимое записи перед выводом на страницу.
Понимание различий между ними — ключ к правильной работе с WordPress.
Action не возвращает значение и используется для запуска функций, а filter всегда возвращает изменённые данные.
Пример использования action
Допустим, мы хотим отправлять письмо администратору при публикации новой записи. Для этого используем action publish_post:
function wpeditor_notify_admin_on_publish($post_ID) {
$post = get_post($post_ID);
$admin_email = get_option('admin_email');
$subject = 'Новая публикация на сайте';
$message = 'Опубликована новая запись: ' . $post->post_title . '\n' . get_permalink($post_ID);
wp_mail($admin_email, $subject, $message);
return $post_ID;
}
add_action('publish_post', 'wpeditor_notify_admin_on_publish');Здесь функция wpeditor_notify_admin_on_publish отправляет письмо при публикации записи.
Пример использования filter
Допустим, нужно автоматически добавлять подпись в конце контента записи. Для этого применим filter the_content:
function wpeditor_add_signature_to_content($content) {
if (is_single()) {
$signature = '<p><em>Спасибо за прочтение!</em></p>';
return $content . $signature;
}
return $content;
}
add_filter('the_content', 'wpeditor_add_signature_to_content');Как создавать собственные хуки в плагинах и темах
Для расширения функционала можно создавать свои хуки. Это позволяет сделать код гибким и легко настраиваемым другими разработчиками.
Чтобы создать action-хук, используйте функцию do_action. Для filter — apply_filters.
Пример создания собственного action-хука
function wpeditor_custom_process() {
// Ваш код
do_action('wpeditor_after_process');
}
// В другом месте можно повесить функцию на этот хук
add_action('wpeditor_after_process', function() {
error_log('Процесс завершён');
});Это позволит другим разработчикам подключать свои функции к событию wpeditor_after_process.
Пример создания собственного filter-хука
function wpeditor_modify_text($text) {
$text = apply_filters('wpeditor_filter_text', $text);
return $text;
}
// Подключаем функцию, которая изменит текст
add_filter('wpeditor_filter_text', function($text) {
return strtoupper($text);
});Практические советы по использованию хуков
1. Всегда используйте префиксы в названиях своих функций и хуков, чтобы избежать конфликтов. В нашем случае это wpeditor_.
2. Проверяйте контекст выполнения функций — некоторые хуки вызываются в админке, другие — на фронтенде.
3. Избегайте тяжёлых операций в хуках, чтобы не замедлять работу сайта.
4. Используйте приоритеты в add_action и add_filter, чтобы контролировать порядок выполнения функций.
Полезные плагины для работы с хуками
- Code Snippets — позволяет добавлять PHP-код с хуками без правки файлов темы или плагинов.
- Query Monitor — помогает отследить, какие хуки и фильтры вызываются на странице.
- Hook Me Up — визуальный инструмент для изучения всех хуков в WordPress.
Использование Code Snippets
Плагин позволяет добавлять и управлять небольшими кусками кода с хуками через админку. Это удобно для тестирования и быстрого внедрения изменений.
Пример: добавьте в Code Snippets функцию из примера с подписью к записи, активируйте её, и изменения сразу вступят в силу.
Заключение
Хуки — фундаментальная часть архитектуры WordPress. Правильное их использование позволяет создавать гибкие и масштабируемые решения, не затрагивая ядро. В этой статье мы рассмотрели основы actions и filters, примеры кода, создание собственных хуков и полезные инструменты для работы с ними.
Освоение хуков значительно расширит ваши возможности как разработчика WordPress и поможет создавать качественные проекты с минимальными затратами времени и ресурсов.