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

wp_transition_comment_status() WP 2.7.0

Вызывает специальные хуки, когда статус комментария изменяется с одного на другой: например с unapproved на approved.

Эта функция не меняет статус комментария, а только вызывает 3 хука. Функция вызывается из других функций, после того, как статус комментария был изменен, чтобы уведомить плагины, темы и функции ядра о смене статуса комментария.

Для реальной смены статуса комментария, используйте функции: wp_update_comment() из неё, в частности, и вызывается эта функция.

Функция вызовет 2 следующих хука, если статус обновляемого комментария отличается от его прошлого статуса:

// Срабатывает всякий раз когда меняется статус
do_action( 'transition_comment_status', $new_status, $old_status, $comment );

// срабатывает когда указанный статус меняется на указанный
do_action( "comment_{$old_status}_to_{$new_status}", $comment );

И третий хук срабатывает всегда когда функция вызывается:

do_action( "comment_{$new_status}_{$comment_type}", $comment_ID, $comment );

Вызывается функция всякий раз при вызове следующих функций:

Возможные значения $new_status и $old_status
  • unapproved
  • approved
  • delete

Статусы комментариев вроде: 0, hold, 1, approve будут соответствовать одному из этих названий:

0         => 'unapproved',
'hold'    => 'unapproved',
1         => 'approved',
'approve' => 'approved',

Т.е. все названия хуков выглядят так:

  • transition_comment_status
  • comment_unapproved_to_approved
  • comment_unapproved_to_delete
  • comment_approved_to_unapproved
  • comment_approved_to_delete
  • comment_delete_to_approved
  • comment_delete_to_unapproved
  • comment_unapproved_{$comment_type}
  • comment_approved_{$comment_type}
  • comment_delete_{$comment_type}
Возвращает

NULL. Ничего.

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

wp_transition_comment_status( $new_status, $old_status, $comment );
$new_status(строка) (обязательный)
Название нового статуса. Может быть: 0, hold, unapproved, 1, approve, approved, delete
$old_status(строка) (обязательный)
Название старого статуса. Может быть одним из значений $new_status.
$comment(объект) (обязательный)
Объект комментария.

Примеры

#1 Пример использования

Отправляем письмо при утверждении комментария

add_action( 'comment_unapproved_to_approved', 'approve_comment_callback' );
function approve_comment_callback( $comment ){
	// коммент изменил статус с неодобреного на одобренный
	// делаем тут что нибудь
	// например отправляем письмо куда-то

	// wp_mail( $comment->comment_author_email, $subject, $notification );
}

Список изменений

С версии 2.7.0 Введена.

Код wp_transition_comment_status() WP 5.5.1

wp-includes/comment.php
<?php
function wp_transition_comment_status( $new_status, $old_status, $comment ) {
	/*
	 * Translate raw statuses to human-readable formats for the hooks.
	 * This is not a complete list of comment status, it's only the ones
	 * that need to be renamed.
	 */
	$comment_statuses = array(
		0         => 'unapproved',
		'hold'    => 'unapproved', // wp_set_comment_status() uses "hold".
		1         => 'approved',
		'approve' => 'approved',   // wp_set_comment_status() uses "approve".
	);
	if ( isset( $comment_statuses[ $new_status ] ) ) {
		$new_status = $comment_statuses[ $new_status ];
	}
	if ( isset( $comment_statuses[ $old_status ] ) ) {
		$old_status = $comment_statuses[ $old_status ];
	}

	// Call the hooks.
	if ( $new_status != $old_status ) {
		/**
		 * Fires when the comment status is in transition.
		 *
		 * @since 2.7.0
		 *
		 * @param int|string $new_status The new comment status.
		 * @param int|string $old_status The old comment status.
		 * @param WP_Comment $comment    Comment object.
		 */
		do_action( 'transition_comment_status', $new_status, $old_status, $comment );
		/**
		 * Fires when the comment status is in transition from one specific status to another.
		 *
		 * The dynamic portions of the hook name, `$old_status`, and `$new_status`,
		 * refer to the old and new comment statuses, respectively.
		 *
		 * @since 2.7.0
		 *
		 * @param WP_Comment $comment Comment object.
		 */
		do_action( "comment_{$old_status}_to_{$new_status}", $comment );
	}
	/**
	 * Fires when the status of a specific comment type is in transition.
	 *
	 * The dynamic portions of the hook name, `$new_status`, and `$comment->comment_type`,
	 * refer to the new comment status, and the type of comment, respectively.
	 *
	 * Typical comment types include an empty string (standard comment), 'pingback',
	 * or 'trackback'.
	 *
	 * @since 2.7.0
	 *
	 * @param int        $comment_ID The comment ID.
	 * @param WP_Comment $comment    Comment object.
	 */
	do_action( "comment_{$new_status}_{$comment->comment_type}", $comment->comment_ID, $comment );
}

Cвязанные функции

Из метки: statuses (статус записи коммента юзера)

Еще из раздела: Комментарии

3 коммента