WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

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) - подтвержден
  • 'spam' - спам
$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 Уведомим автора поста о комментарии к его посту

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

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 );
}

Где вызывается хук

wp_new_comment()
comment_post
wp-includes/comment.php 2017
do_action( 'comment_post', $comment_ID, $commentdata['comment_approved'], $commentdata );

Где используется хук (в ядре WP)

wp-includes/default-filters.php 425
add_action( 'comment_post', 'wp_new_comment_notify_moderator' );
wp-includes/default-filters.php 426
add_action( 'comment_post', 'wp_new_comment_notify_postauthor' );

Lashes.moscow

Поресничное наращивание ресниц в москве lashes.moscow.

lashes.moscow

Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться