WordPress как на ладони
wordpress jino

comment_post хук-событие . WP 1.2.1

Срабатывает сразу после добавления комментария в базу данных. Параметры передаваемые событием: ID комментария, его статус и данные.

Заметка: для авторов у которых есть права редактировать комментарии, уведомление о комментировании их постов отправляется автоматически, если в настройках установлена опция: Настройки > Обсуждения > Автор должен иметь ранее одобренные комментарии. За эту отправку писем отвечает функция wp_notify_moderator().

Использование

add_action( 'comment_post', 'action_function_name_11', 10, 3 );
function action_function_name_11( $comment_ID, $comment_approved, $commentdata ) {
	// Действие...
}
$comment_ID(число)
ID комментария, который был добавлен в БД.
$comment_approved(логический/число)
Статус подтверждения комментария, может быть: 0 (false) - не подтвержден или 1 (true) - подтвержден.
$commentdata(массив)

С версии 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 Уведомим автора поста о комментарии к его посту

Предположим, что у нас на сайте посты публикуют несколько авторов и нужно, чтобы при комметировании записи, автору на почту отправлялось письмо-уведомление о добавлении нового комментария к записи:

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 );
}
add_action( 'comment_post', 'author_new_comment_notify', 10, 2 );

Связи хука

Используется в: wp_new_comment()

Остальные хуки из: wp_new_comment():

Фрагменты кода хука comment_post

Фрагмент из: wp-includes/comment.php VER 4.9.1
...
		if ( ! $comment_ID ) {
			return false;
		}
	}

	/**
	 * Fires immediately after a comment is inserted into the database.
	 *
	 * @since 1.2.0
	 * @since 4.5.0 The `$commentdata` parameter was added.
	 *
	 * @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.
	 */
	do_action( 'comment_post', $comment_ID, $commentdata['comment_approved'], $commentdata );

	return $comment_ID;
}

/**
 * Send a comment moderation notification to the comment moderator.
 *
 * @since 4.4.0
 *
 * @param int $comment_ID ID of the comment.
 * @return bool True on success, false on failure.
 */
function wp_new_comment_notify_moderator( $comment_ID ) {
	$comment = get_comment( $comment_ID );

...
comment_post 3 комментария
  • Помогите пожалуйста!!! У Woocommerce есть аналогичный хук только для товара ?!!!

  • Александр

    Подскажите пожалуйста работает ли этот хук в 4,7?!

  • Дарья

    Это нужно вставить в function.php? Не отправляет уведомления ((

    Ответить2 месяца назад #

Здравствуйте, !

Ваш комментарий
Предпросмотр