WP_TRANSITION_COMMENT_STATUS()
Функция WP_TRANSITION_COMMENT_STATUS() используется для обработки изменений статуса комментариев в WordPress. Эта функция запускает определенные действия в тех случаях, когда статус комментария меняется.
Основные моменты
Когда изменяется статус комментария, и новый статус отличается от предыдущего, вызываются следующие действия:
- transition_comment_status — этот хук срабатывает с новым статусом, старым статусом и данными комментари��.
- comment_$old_statusto$new_status — этот хук также срабатывает и содержит данные комментария.
Кроме того, есть действие, которое выполняется независимо от того, изменился статус или нет. Оно называется comment_$newstatus$comment->comment_type и зависит от типа комментария.
Основные хуки функции
Вот хуки, которые могут быть вызваны этой функцией:
- transition_comment_status
- comment_(old_status)to(new_status)
Примеры:- comment_unapproved_to_approved
- comment_spam_to_approved
- comment_approved_to_unapproved
- comment_(newstatus)(comment_type)
Примеры:- comment_approved_comment
- comment_unapproved_pingback
- comment_spam_comment
Возврат
Функция не возвращает значений (null).
Использование
Функцию можно использовать следующим образом:
wp_transition_comment_status( $new_status, $old_status, $comment );
Параметры:
- $new_status (string) (обязательный) — новый статус комментария.
- $old_status (string) (обязательный) — предыдущий статус комментария.
- $comment (WP_Comment) (обязательный) — объект комментария.
Пример использования
Если вам нужно отправить электронное письмо, когда комментарий одобряется, вы можете использовать следующий код:
add_action( 'comment_unapproved_to_approved', 'approve_comment_callback' );
function approve_comment_callback( $comment ) {
// Комментарий изменил статус с неутвержденного на утвержденный
// Здесь вы можете выполнить нужные действия
// Например, отправить письмо
// wp_mail( $comment->comment_author_email, $subject, $notification );
}
Как работает функция
Вот упрощенное объяснение того, как работает функция wp_transition_comment_status:
- Функция принимает новый и старый статус комментария, а также объект комментария.
- Она проверяет, изменился ли статус комментария. Если да, то срабатывают соответствующие хуки.
- Хук
transition_comment_statusактивируется каждый раз, когда статус комментария изменяется. - Хук с конкретными названиями активируется при переходе от одного статуса к другому (например, от неутвержденного к утвержденному).
Пример кода функции
Вот пример кода реализации функции:
function wp_transition_comment_status( $new_status, $old_status, $comment ) {
// Переводим статусы комментариев в понятные форматы для хуков.
$comment_statuses = array(
0 => 'unapproved',
'hold' => 'unapproved',
1 => 'approved',
'approve' => 'approved',
);
if ( isset( $comment_statuses[ $new_status ] ) ) {
$new_status = $comment_statuses[ $new_status ];
}
if ( isset( $comment_statuses[ $old_status ] ) ) {
$old_status = $comment_statuses[ $old_status ];
}
// Вызываем хуки.
if ( $new_status != $old_status ) {
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->comment_type}", $comment->comment_ID, $comment );
}
Заключение
Функция wp_transition_comment_status() — это мощный инструмент для разработчиков WordPress, который позволяет реагировать на изменения статуса комментариев. Понимание работы этой функции поможет вам лучше управлять вашим сайтом и настраивать его поведение в зависимости от статуса комментариев.