Как использовать функцию WP_TRANSITION_COMMENT_STATUS() в WordPress

WP_TRANSITION_COMMENT_STATUS()

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

Основные моменты

Когда изменяется статус комментария, и новый статус отличается от предыдущего, вызываются следующие действия:

  1. transition_comment_status — этот хук срабатывает с новым статусом, старым статусом и данными комментари��.
  2. 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:

  1. Функция принимает новый и старый статус комментария, а также объект комментария.
  2. Она проверяет, изменился ли статус комментария. Если да, то срабатывают соответствующие хуки.
  3. Хук transition_comment_status активируется каждый раз, когда статус комментария изменяется.
  4. Хук с конкретными названиями активируется при переходе от одного статуса к другому (например, от неутвержденного к утвержденному).

Пример кода функции

Вот пример кода реализации функции:

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, который позволяет реагировать на изменения статуса комментариев. Понимание работы этой функции поможет вам лучше управлять вашим сайтом и настраивать его поведение в зависимости от статуса комментариев.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *