ТОП-20 самых полезных хуков WordPress (Actions и Filters) + теория и примеры
Разберём теорию и сразу посмотрим самые полезные хуки с практическими примерами.
Что такое хуки в WordPress (Hooks)
Хуки (Hooks) в WordPress — это механизм расширения функциональности сайта без изменения ядра CMS.
Проще говоря:
— WordPress «ставит точки расширения» в коде
— разработчик «подключает» свои функции
— сайт получает новую логику без редактирования ядра
Это основа всей архитектуры WordPress.
Зачем нужны хуки
Хуки используются для:
- изменения контента сайта
- добавления скриптов и стилей
- работы с пользователями
- SEO-оптимизации
- кастомизации WooCommerce
- создания плагинов
Виды хуков в WordPress
В WordPress существует 2 типа хуков:
1. Actions (действия)
Action (действие) — это хук, который выполняет код в определённый момент времени.
📌 Особенности:
- не возвращает значение
- выполняет действие
- используется для событий
Пример:
add_action('wp_footer', function () {
echo '<p>Сайт загружен</p>';
});
Этот код просто выполняется в нужный момент.
2. Filters (фильтры)
Filter (фильтр) — это хук, который изменяет данные перед их выводом.
📌 Особенности:
- принимает значение
- изменяет его
- обязательно возвращает результат
Пример:
add_filter('the_title', function ($title) {
return '🔥 ' . $title;
});
Здесь мы изменяем заголовок статьи.
Главное отличие Actions и Filters
| Actions | Filters |
|---|---|
| Выполняют код | Изменяют данные |
| Не возвращают результат | Обязательно возвращают |
| Используются для событий | Используются для обработки данных |
ТОП-10 ACTION HOOKS WordPress
wp_enqueue_scripts — подключение файлов
📌 Подключение JS только на главной
add_action('wp_enqueue_scripts', function () {
if (is_front_page()) {
wp_enqueue_script('home-js', get_template_directory_uri() . '/home.js', [], null, true);
}
});
init — регистрация функций
add_action('init', function () {
register_post_type('portfolio', [
'label' => 'Портфолио',
'public' => true
]);
});
wp_head — SEO и мета-теги
add_action('wp_head', function () {
echo '<meta name="robots" content="index, follow">';
});
wp_footer — скрипты
add_action('wp_footer', function () {
echo '<script>console.log("loaded")</script>';
});
template_redirect — защита страниц
add_action('template_redirect', function () {
if (!is_user_logged_in() && is_page('dashboard')) {
wp_redirect('/login');
exit;
}
});
save_post — автоматизация
add_action('save_post', function ($post_id) {
update_post_meta($post_id, '_saved_time', time());
});
wp_login — логирование входа
add_action('wp_login', function ($login, $user) {
update_user_meta($user->ID, 'last_login_ip', $_SERVER['REMOTE_ADDR']);
}, 10, 2);
user_register — приветствие
add_action('user_register', function ($user_id) {
$user = get_userdata($user_id);
wp_mail($user->user_email, 'Добро пожаловать!', 'Спасибо за регистрацию');
});
admin_menu — админка
add_action('admin_menu', function () {
add_menu_page('Настройки', 'Настройки', 'manage_options', 'settings', function () {
echo '<h1>Настройки сайта</h1>';
});
});
widgets_init — виджеты
add_action('widgets_init', function () {
register_sidebar(['name' => 'Sidebar']);
});
ТОП-10 FILTER HOOKS WordPress
the_content — SEO блоки
add_filter('the_content', function ($content) {
if (is_single()) {
$content .= '<p>🔥 Читайте также другие статьи</p>';
}
return $content;
});
the_title — улучшение SEO
add_filter('the_title', function ($title) {
return $title . ' | Полезная статья';
});
excerpt_length — длина сниппета
add_filter('excerpt_length', function () {
return 25;
});
body_class — A/B тест
add_filter('body_class', function ($classes) {
$classes[] = 'variant-a';
return $classes;
});
nav_menu_css_class — меню
add_filter('nav_menu_css_class', function ($classes) {
$classes[] = 'nav-item';
return $classes;
});
upload_mimes — SVG загрузка
add_filter('upload_mimes', function ($mimes) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
});
login_redirect — редирект
add_filter('login_redirect', function () {
return '/account';
});
pre_get_posts — SEO фильтрация
add_filter('pre_get_posts', function ($query) {
if ($query->is_search) {
$query->set('posts_per_page', 10);
}
});
wp_mail_from — email бренд
add_filter('wp_mail_from', function () {
return 'noreply@site.com';
});
comment_form_defaults — комментарии
add_filter('comment_form_defaults', function ($defaults) {
$defaults['title_reply'] = '💬 Оставьте комментарий';
return $defaults;
});
БОНУС: WooCommerce пример
add_action('woocommerce_single_product_summary', function () {
echo '<p>🔥 Бесплатная доставка сегодня</p>';
}, 25);
Где использовать хуки
- functions.php (дочерняя тема)
- собственные плагины (лучший вариант)
Частые ошибки
- отсутствие
returnв фильтрах - использование
echoвместо фильтрации - неправильный
pre_get_posts - редактирование ядра WordPress
Итог
Хуки WordPress — это фундамент системы.
С их помощью можно:
✔ изменять любой элемент сайта
✔ создавать плагины
✔ улучшать SEO
✔ кастомизировать WooCommerce
Освоение хуков это уровень профессионального WordPress разработчика.
Долго не мог понять разницы между между видами хуков, сейчас наконец-то дошло. Статья норм!