В этой статье мы подробно разберем, как создать собственный функциональный плагин для WordPress, используя возможности хуков — actions и filters. Это позволит вам расширять функциональность сайта без редактирования темы или ядра WordPress, что важно для безопасности и удобства обновлений.
Что такое хуки в WordPress и зачем они нужны
Хуки — это специальные точки в коде WordPress, где можно "подцепить" свою функцию и изменить поведение сайта. Существует два основных типа хуков:
- Actions — позволяют выполнять свои функции в определенный момент (например, при сохранении поста, загрузке страницы).
- Filters — позволяют изменить данные перед их выводом или сохранением.
Использование хуков — это ключ к созданию масштабируемых и гибких плагинов.
Пример использования action-хука
Допустим, вы хотите отправлять уведомление при публикации новой записи. Для этого используйте хук publish_post:
function wpmarket_notify_on_publish($post_ID) {
$post = get_post($post_ID);
$title = $post->post_title;
$url = get_permalink($post_ID);
wp_mail('admin@site.ru', 'Новая публикация', "Опубликована новая запись: $title. Ссылка: $url");
return $post_ID;
}
add_action('publish_post', 'wpmarket_notify_on_publish');Этот простой код отправит письмо администратору при публикации записи.
Структура плагина: как организовать файлы и код
Чтобы создать плагин, достаточно создать папку в директории wp-content/plugins, например wpmarket-custom-functions, и внутри создать файл с расширением .php, например wpmarket-custom-functions.php. В начале файла нужно добавить заголовок плагина:
<?php
/**
* Plugin Name: WP Market Custom Functions
* Description: Пользовательские функции и хуки для сайта WP Market
* Version: 1.0
* Author: WP Market
*/
// Код плагина здесь
После этого вы можете добавлять свои функции и регистрировать хуки.
Рекомендации по организации кода
- Используйте префиксы для функций, например,
wpmarket_, чтобы избежать конфликтов. - Разбивайте код на отдельные функции по смыслу.
- Добавляйте комментарии для удобства поддержки.
Примеры полезных фильтров для изменения поведения WordPress
Фильтры позволяют изменять поведение системы без вмешательства в ядро. Рассмотрим несколько примеров.
Изменение длины отрывка (excerpt)
По умолчанию длина отрывка — 55 слов. Чтобы изменить ее, используем фильтр excerpt_length:
function wpmarket_custom_excerpt_length($length) {
return 30; // Показывать 30 слов
}
add_filter('excerpt_length', 'wpmarket_custom_excerpt_length');Этот код уменьшит длину отрывка до 30 слов, что может быть полезно для компактного отображения анонсов.
Добавление собственного класса к ссылкам в меню
Иногда нужно добавить CSS класс к ссылкам меню для стилизации. Для этого есть фильтр nav_menu_link_attributes:
function wpmarket_add_menu_link_class($atts, $item, $args) {
if ($args->theme_location === 'primary') {
$atts['class'] = 'wpmarket-menu-link';
}
return $atts;
}
add_filter('nav_menu_link_attributes', 'wpmarket_add_menu_link_class', 10, 3);Такой подход позволит легко управлять стилями меню через CSS.
Как отлаживать плагин и проверять работу хуков
Отладка — важный этап разработки. Вот несколько советов:
- Включите
WP_DEBUGвwp-config.php, чтобы видеть ошибки и предупреждения. - Используйте функцию
error_log()для записи отладочной информации в лог сервера. - Для проверки срабатывания хуков можно временно добавить запись в лог:
function wpmarket_debug_hook() {
error_log('Хук сработал: wpmarket_debug_hook');
}
add_action('init', 'wpmarket_debug_hook');Также удобно использовать плагины для отладки, например, Query Monitor или Debug Bar.
Пример простого плагина с использованием хуков
Соберем воедино все знания и создадим плагин, который добавляет в админ-панель сообщение при заходе на любую страницу редактирования записи.
<?php
/**
* Plugin Name: WP Market Admin Notice
* Description: Показывает уведомление в админке при редактировании записи.
* Version: 1.0
* Author: WP Market
*/
function wpmarket_admin_notice_edit_post() {
$screen = get_current_screen();
if ($screen->base === 'post' && $screen->action !== 'add') {
echo '<div class="notice notice-info is-dismissible">'
. 'Вы редактируете запись. Не забудьте сохранить изменения!'
. '</div>';
}
}
add_action('admin_notices', 'wpmarket_admin_notice_edit_post');Этот плагин показывает информационное сообщение при редактировании существующей записи, что помогает не забыть сохранить изменения.
Заключение: зачем создавать свои плагины и хуки
Создание собственных плагинов с применением хуков — это гибкий способ расширить функциональность WordPress без риска потерять изменения при обновлении темы или системы. Такой подход помогает поддерживать код чистым, удобным для поддержки и масштабируемым.
Используйте примеры из статьи как отправную точку, экспериментируйте с хуками и фильтрами, и вы сможете создавать сложные и эффективные решения для вашего сайта на WordPress.