Автоматические уведомления в WordPress позволяют оперативно информировать пользователей и администраторов о важных событиях на сайте. Это могут быть уведомления о новых комментариях, заказах, изменениях контента и других действиях. В этой статье мы рассмотрим, как создать собственные автоматические уведомления на основе хуков WordPress и популярных плагинов, а также приведём примеры кода для практического применения.
Что такое хуки WordPress и как они помогают в создании уведомлений
Хуки (actions и filters) — это встроенный механизм WordPress для расширения функционала без изменения исходного кода системы. С помощью хуков мы можем подключать свои функции к определённым событиям, например, при публикации поста, регистрации пользователя или отправке комментария.
Для автоматических уведомлений чаще всего используют action hooks, которые позволяют выполнить код в нужный момент. Например, hook wpbegin_action_new_post_published (пользовательский) можно привязать к событию публикации поста и отправить уведомление администратору.
Используя хуки, можно легко интегрировать собственные уведомления в любой бизнес-процесс сайта без добавления лишних плагинов.
Пример использования action hook для уведомления администратора о новом посте
function wpbegin_notify_admin_on_new_post($post_ID, $post) {
if($post->post_status != 'publish') return;
$admin_email = get_option('admin_email');
$subject = 'Новый пост опубликован: ' . $post->post_title;
$message = 'Пост "' . $post->post_title . '" был опубликован на сайте: ' . get_permalink($post_ID);
wp_mail($admin_email, $subject, $message);
}
add_action('wp_insert_post', 'wpbegin_notify_admin_on_new_post', 10, 2);Этот код отправит email уведомление на адрес администратора при публикации любого нового поста.
Использование плагинов для расширенных автоматических уведомлений
Если вы хотите создавать более сложные уведомления с возможностью настройки шаблонов, условий и каналов доставки, стоит обратить внимание на плагины. Ниже рассмотрим два популярных решения и их интеграцию с хуками.
Плагин WP Mail SMTP для надёжной отправки писем
WordPress по умолчанию использует функцию wp_mail, которая зависит от настроек сервера. Плагин WP Mail SMTP помогает настроить SMTP-сервер, что гарантирует доставку писем и позволяет отслеживать статус отправки.
Интегрируя WP Mail SMTP с собственными хуками, вы улучшаете надежность уведомлений. Для этого достаточно активировать плагин и использовать функцию wp_mail как обычно.
Плагин Clearfy Pro для управления уведомлениями и оптимизации
Clearfy Pro — это многофункциональный плагин для оптимизации и безопасности WordPress, включающий модуль управления уведомлениями. Он позволяет отключать лишние системные письма и настраивать свои уведомления.
Например, с помощью Clearfy можно настроить автоматическое уведомление по email или в админ-панель о важных событиях, таких как обновление плагинов или попытки входа.
Создание уведомлений через AJAX и кастомные REST API endpoint
Для более интерактивных уведомлений, например, в админ-панели или на фронтенде без перезагрузки страницы, можно использовать AJAX или REST API. Это позволяет выводить уведомления в реальном времени.
Пример создания AJAX-уведомления о новых заказах WooCommerce
Допустим, вам нужно уведомлять администратора о новых заказах сразу после их оформления.
function wpbegin_ajax_new_order_notification() {
if ( ! current_user_can( 'manage_woocommerce' ) ) {
wp_send_json_error('Нет доступа');
}
$args = array(
'post_type' => 'shop_order',
'post_status' => 'wc-processing',
'posts_per_page' => 1,
'orderby' => 'date',
'order' => 'DESC'
);
$orders = get_posts($args);
if($orders) {
$order = wc_get_order($orders[0]->ID);
wp_send_json_success(array(
'order_id' => $order->get_id(),
'order_total' => $order->get_total(),
'order_link' => admin_url('post.php?post=' . $order->get_id() . '&action=edit')
));
} else {
wp_send_json_error('Заказы не найдены');
}
}
add_action('wp_ajax_wpbegin_check_new_order', 'wpbegin_ajax_new_order_notification');Для фронтенда достаточно написать JavaScript, который будет периодически отправлять AJAX-запрос на этот экшен и выводить уведомление.
Советы по оптимизации и безопасности уведомлений
При реализации автоматических уведомлений важно учитывать нагрузку на сервер и безопасность данных.
- Используйте Nonce для защиты AJAX-запросов от CSRF-атак.
- Кешируйте данные, если уведомления формируются на основе тяжёлых запросов.
- Настраивайте лимиты отправки писем, чтобы избежать попадания в спам.
- Используйте проверенные SMTP-сервисы и плагины, например, WP Mail SMTP.
Также рекомендуется логировать отправленные уведомления для отладки и контроля.
Пример добавления Nonce в AJAX-запрос
function wpbegin_enqueue_scripts() {
wp_enqueue_script('wpbegin-admin-notify', plugin_dir_url(__FILE__) . 'admin-notify.js', array('jquery'), null, true);
wp_localize_script('wpbegin-admin-notify', 'wpbegin_ajax_obj', array(
'ajax_url' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('wpbegin_nonce')
));
}
add_action('admin_enqueue_scripts', 'wpbegin_enqueue_scripts');
function wpbegin_ajax_new_order_notification() {
check_ajax_referer('wpbegin_nonce', 'security');
// остальной код
}Таким образом вы обеспечите безопасность и стабильность работы уведомлений.