В WordPress комментарии играют важную роль для взаимодействия с посетителями сайта. Иногда требуется добавить дополнительную логику при добавлении комментария. Для этого идеально подходит хук comment_post, который срабатывает сразу после сохранения комментария. В этой статье подробно разберём, как использовать этот хук для решения конкретных задач по управлению комментариями.
Что такое хук comment_post в WordPress
Хук comment_post — это action-хук, который вызывается после успешного добавления комментария в базу данных. Он принимает два параметра: ID комментария и статус комментария (например, 'approve' для одобренных).
Это даёт возможность выполнить дополнительный код сразу после того, как комментарий создан, например, отправить уведомление, провести модерацию, выполнить кастомные проверки и многое другое.
Пример базового использования хука:
add_action('comment_post', 'wp3_handle_new_comment', 10, 2);
function wp3_handle_new_comment($comment_id, $comment_approved) {
// Ваш код обработки здесь
}Примеры задач, решаемых с помощью comment_post
Автоматическая модерация комментариев по ключевым словам
Часто требуется автоматически отправлять в спам комментарии с нежелательными словами. С помощью comment_post можно проверить текст и менять статус комментария.
add_action('comment_post', 'wp3_auto_moderate_comment', 10, 2);
function wp3_auto_moderate_comment($comment_id, $comment_approved) {
if ($comment_approved != 1) return; // Обрабатываем только одобренные
$comment = get_comment($comment_id);
$bad_words = ['spamword1', 'spamword2', 'недопустимое'];
foreach ($bad_words as $word) {
if (stripos($comment->comment_content, $word) !== false) {
wp_set_comment_status($comment_id, 'spam');
break;
}
}
}Такой код проверит комментарий на наличие запрещённых слов и переведёт его в спам, если что-то найдёт.
Отправка уведомлений администратору о новых комментариях
Можно уведомлять администратора сайта о каждом новом комментарии, что особенно полезно для сайтов без постоянного мониторинга панели управления.
add_action('comment_post', 'wp3_notify_admin_new_comment', 10, 2);
function wp3_notify_admin_new_comment($comment_id, $comment_approved) {
if ($comment_approved != 1) return; // Только одобренные
$comment = get_comment($comment_id);
$post = get_post($comment->comment_post_ID);
$admin_email = get_option('admin_email');
$subject = 'Новый комментарий на вашем сайте';
$message = "Новый комментарий к статье '{$post->post_title}':\n\n";
$message .= $comment->comment_content . "\n\n";
$message .= "Автор: {$comment->comment_author}\n";
$message .= "Посмотреть комментарий: " . get_comment_link($comment_id);
wp_mail($admin_email, $subject, $message);
}Это простой способ держать руку на пульсе активности на сайте.
Использование хука для интеграции с плагином Clearfy Pro
Если у вас установлен плагин Clearfy Pro, можно дополнительно использовать его инструменты для оптимизации комментариев.
Например, Clearfy Pro позволяет включить расширенную защиту от спама и повысить безопасность комментариев. В связке с comment_post можно писать более сложные проверки и логгирование.
Создание собственного фильтра на хук comment_post в плагине
Если вы разрабатываете плагин под WordPress, рекомендуем использовать префиксы в названии функций, чтобы избежать конфликтов. Например:
add_action('comment_post', 'wp3_custom_comment_processing', 10, 2);
function wp3_custom_comment_processing($comment_id, $comment_approved) {
// Например, добавим мета-данные к новому комментарию
if ($comment_approved == 1) {
add_comment_meta($comment_id, 'wp3_processed', time());
}
}Добавление мета-данных поможет в будущем фильтровать или анализировать комментарии.
Советы по отладке и безопасности при работе с comment_post
1. Всегда проверяйте статус комментария, чтобы не выполнять код для неподтверждённых комментариев.
2. При работе с пользовательскими данными используйте функции sanitize_text_field() или другие функции очистки, чтобы избежать XSS и других уязвимостей.
3. Не забывайте добавлять префиксы в названия функций, чтобы избежать конфликтов с другими плагинами и темами.
4. При отправке писем используйте wp_mail с корректной кодировкой и заголовками.
Вывод
Хук comment_post — мощный инструмент для расширения функционала комментариев в WordPress. Он позволяет внедрять кастомную логику сразу после добавления комментария, что помогает автоматизировать модерацию, уведомления и другие задачи. Используйте его с умом, не забывайте про безопасность и оптимизацию.