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}

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

Приклади

0

#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 6.0.2

function wp_transition_comment_status( $new_status, $old_status, $comment ) {
	/*
	 * Translate raw statuses до human-readable formats for the hooks.
	 * Це не є повним листом коментарів статуї, це тільки 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 Новий коментар status.
		 * @param int|string $old_status 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 hook name, `$old_status`, and `$new_status`,
		 * refer to the old and new comment statuses, respectively.
		 *
		 * Possible hook names include:
		 *
		 * - `comment_unapproved_to_approved`
		 * - `comment_spam_to_approved`
		 * - `comment_approved_to_unapproved`
		 * - `comment_spam_to_unapproved`
		 * - `comment_unapproved_to_spam`
		 * - `comment_approved_to_spam`
		 *
		 * @ 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 typ is in transition.
	 *
	 * The dynamic portions of hook name, `$new_status`, and `$comment->comment_type`,
	 * refer to the new comment status, і the typ comment, respectively.
	 *
	 * Typical comment types include 'comment', 'pingback', або 'trackback'.
	 *
	 * Possible hook names include:
	 *
	 * - `comment_approved_comment`
	 * - `comment_approved_pingback`
	 * - `comment_approved_trackback`
	 * - `comment_unapproved_comment`
	 * - `comment_unapproved_pingback`
	 * - `comment_unapproved_trackback`
	 * - `comment_spam_comment`
	 * - `comment_spam_pingback`
	 * - `comment_spam_trackback`
	 *
	 * @ Since 2.7.0
	 *
	 * @param string $comment_ID Коментарі ID як numeric string.
	 * @param WP_Comment $comment Comment object.
	 */
	do_action( "comment_{$new_status}_{$comment->comment_type}", $comment->comment_ID, $comment );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *