comment_post
Срабатывает сразу после добавления комментария в базу данных. Параметры передаваемые событием: ID комментария, его статус и данные.
Заметка: для авторов у которых есть права редактировать комментарии, уведомление о комментировании их постов отправляется автоматически, если в настройках установлена опция: Настройки > Обсуждения > Автор
должен иметь ранее одобренные комментарии. За эту отправку писем отвечает функция wp_notify_moderator().
Использование
add_action( 'comment_post', 'wp_kama_comment_post_action', 10, 3 ); /** * Function for `comment_post` action-hook. * * @param int $comment_id The comment ID. * @param int|string $comment_approved 1 if the comment is approved, 0 if not, 'spam' if spam. * @param array $commentdata Comment data. * * @return void */ function wp_kama_comment_post_action( $comment_id, $comment_approved, $commentdata ){ // action... }
- $comment_ID(число)
- ID комментария, который был добавлен в БД.
- $comment_approved(строка/число)
Статус подтверждения комментария, может быть:
0
(false) - не подтвержден1
(true) - подтвержден'spam'
- спам
- $commentdata(массив) (WP 4.5)
Массив данных комментария в виде ассоциативного массива. Ключи массива = полю таблицы в БД. Пример массива:
$data = array( 'comment_post_ID' => 1, 'comment_author' => 'admin', 'comment_author_email' => 'admin@admin.com', 'comment_author_url' => 'http://', 'comment_content' => 'текст коммента', 'comment_type' => '', 'comment_parent' => 0, 'user_id' => 1, 'comment_author_IP' => '127.0.0.1', 'comment_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)', 'comment_date' => current_time('mysql'), 'comment_approved' => 1, );
Примеры
#1 Уведомим автора поста о комментарии к его посту
Предположим, что у нас на сайте посты публикуют несколько авторов и нужно, чтобы при комметировании записи, автору на почту отправлялось письмо-уведомление о добавлении нового комментария к записи:
add_action( 'comment_post', 'author_new_comment_notify', 10, 2 ); function author_new_comment_notify( $comment_ID, $comment_approved ){ // выходим если комментарий не одобрен //if( $comment_approved == 0 ) // return; $comment = get_comment( $comment_ID ); $post = get_post( $comment->comment_post_ID ); $user = get_userdata( $post->post_author ); if( empty( $user->user_email ) ) return; // сообщение $message = 'Новый ответ к вашей записи: '. $post->post_title . "\r\n"; $message .= get_permalink($comment->comment_post_ID) . "\r\n\r\n"; $message .= sprintf( __('Author : %1$s (IP: %2$s , %3$s)'), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n"; $message .= sprintf( __('URL : %s'), $comment->comment_author_url ) . "\r\n"; $message .= 'Текст ответа:' . "\r\n" . $comment->comment_content . "\r\n\r\n"; // Тема $subject = '['.$_SERVER['HTTP_HOST'].'] Новый ответ к вашей записи.'; // заголовки $headers = 'From: No Answer <noanswer@'. $_SERVER['HTTP_HOST'] .'>' . "\r\n"; @wp_mail( $user->user_email, $subject, $message, $headers ); }
Список изменений
С версии 1.2.0 | Введена. |
С версии 4.5.0 | The $commentdata parameter was added. |
Где вызывается хук
do_action( 'comment_post', $comment_id, $commentdata['comment_approved'], $commentdata );
Где используется хук в WordPress
add_action( 'comment_post', 'wp_new_comment_notify_moderator' );
add_action( 'comment_post', 'wp_new_comment_notify_postauthor' );