Хук comment_post
в WordPress срабатывает сразу после того, как комментарий добавлен в базу данных. С его помощью можно выполнять различные действия: уведомлять автора поста, сохранять метаданные, фильтровать или изменять содержимое комментария. Этот хук предоставляет разработчикам удобный способ расширить функциональность, связанную с комментариями.
do_action( 'comment_post', int $comment_id, int|string $comment_approved, array $commentdata );
- $comment_id (int) — ID добавленного комментария.
- $comment_approved (int|string) — статус подтверждения комментария. Может принимать следующие значения:
1
— комментарий одобрен,0
— комментарий ожидает модерации,'spam'
— комментарий помечен как спам.
- $commentdata (array) — массив данных о комментарии, включая такие данные, как ID поста, имя автора, содержание комментария и т.д.
Использование
Хук comment_post
можно подключить с помощью функции add_action()
и передать ей функцию обратного вызова, которая будет выполняться после добавления комментария.
add_action( 'comment_post', 'my_custom_comment_action', 10, 3 );
function my_custom_comment_action( $comment_id, $comment_approved, $commentdata ) {
// Логика действия
}
Пример 1: Уведомление автора записи о новом комментарии
Этот пример показывает, как отправить уведомление автору записи, когда на его пост поступает новый комментарий.
add_action( 'comment_post', 'notify_author_on_new_comment', 10, 2 );
function notify_author_on_new_comment( $comment_id, $comment_approved ) {
// Выходим, если комментарий не одобрен
if ( 0 === $comment_approved ) {
return;
}
$comment = get_comment( $comment_id );
$post = get_post( $comment->comment_post_ID );
$author = get_userdata( $post->post_author );
if ( ! empty( $author->user_email ) ) {
$message = "Новый комментарий к вашей записи: " . $post->post_title . "\n";
$message .= get_permalink( $post->ID ) . "\n\n";
$message .= "Автор: " . $comment->comment_author . "\n";
$message .= "Текст: " . $comment->comment_content . "\n";
wp_mail( $author->user_email, 'Новый комментарий к вашей записи', $message );
}
}
Пример 2: Отправка уведомления на email о новом комментарии
Можно настроить отправку email-уведомления администратору или модератору, когда на сайте появляется новый комментарий, даже если он ожидает модерации.
add_action( 'comment_post', 'notify_admin_new_comment', 10, 3 );
function notify_admin_new_comment( $comment_id, $comment_approved, $commentdata ) {
$admin_email = '[email protected]'; // Замените на email администратора
$comment_content = $commentdata['comment_content'];
$post_title = get_the_title( $commentdata['comment_post_ID'] );
$subject = "Новый комментарий на пост: $post_title";
$message = "Поступил новый комментарий:\n\n";
$message .= "Текст комментария:\n$comment_content\n\n";
$message .= "Ссылка на пост: " . get_permalink( $commentdata['comment_post_ID'] );
wp_mail( $admin_email, $subject, $message );
}
Пример 3: Сохранение дополнительных данных из пользовательского поля
Этот пример показывает, как сохранить данные, введенные пользователем в поле «Телефон», добавленное в форму комментариев.
add_action( 'comment_post', 'save_comment_phone_meta', 10, 1 );
function save_comment_phone_meta( $comment_id ) {
if ( ! empty( $_POST['phone'] ) ) {
$phone = sanitize_text_field( $_POST['phone'] );
add_comment_meta( $comment_id, 'phone', $phone );
}
}
Теперь, при добавлении комментария, если поле «Телефон» заполнено, его данные будут сохранены как метаданные комментария.
Пример 4: Автоматическая пометка комментария как спам, если он содержит запрещенные слова
Можно использовать хук comment_post
для автоматической пометки комментария как спам, если он содержит определенные слова или фразы.
add_action( 'comment_post', 'mark_comment_as_spam', 10, 3 );
function mark_comment_as_spam( $comment_id, $comment_approved, $commentdata ) {
$spam_keywords = array( 'запрещенное слово1', 'запрещенное слово2' ); // Замените на свои ключевые слова
foreach ( $spam_keywords as $keyword ) {
if ( stripos( $commentdata['comment_content'], $keyword ) !== false ) {
wp_spam_comment( $comment_id ); // Помечаем комментарий как спам
break;
}
}
}
Заключение
Хук comment_post
в WordPress предоставляет разработчикам гибкие возможности для настройки действий, выполняемых сразу после добавления комментария. С его помощью можно настраивать уведомления, сохранять дополнительные данные, фильтровать комментарии и многое другое, что делает этот хук полезным инструментом для расширения функциональности комментирования на сайте.