wp_insert_comment

Срабатывает сразу после вставки комментария в базу данных
Хук WordPress
INT 2.8.0
WordPress Icon
Содержание
  1. Описание хука
  2. Примеры использования
  3. Создание комментария с помощью хука wp_insert_comment
  4. Изменение данных комментария с помощью хука wp_insert_comment
  5. Удаление комментария с помощью хука wp_insert_comment
  6. Отправка уведомления о новом комментарии с помощью хука wp_insert_comment
  7. Обновление счетчика комментариев с помощью хука wp_insert_comment
  8. Вопросы и ответы
  9. Как получить ID комментария после его вставки в базу данных?
  10. Как изменить данные комментария перед его сохранением в базу данных?
  11. Как добавить дополнительные поля в комментарий перед его сохранением в базу данных?
  12. Как проверить и изменить статус комментария перед его сохранением в базу данных?
  13. Как добавить метаданные к комментарию после его сохранения в базу данных?
  14. Как выполнить дополнительные действия после сохранения комментария в базу данных?
  15. Как отменить сохранение комментария в базу данных?
  16. Связанные элементы

Описание хука

Хук «wp_insert_comment» срабатывает сразу после вставки комментария в базу данных WordPress. Он позволяет определить и изменить данные комментария перед сохранением в базе данных или выполнить другие действия, связанные с комментарием.

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

do_action( 'wp_insert_comment', int $id, WP_Comment $comment )

Этот хук вызывается с двумя параметрами: $id (int) — идентификатор комментария и $comment (WP_Comment) — объект комментария. Он позволяет разработчикам выполнять дополнительные действия с комментарием перед сохранением.

  • $id (int): Идентификатор комментария.
  • $comment (WP_Comment): Объект комментария.
<?php
/**
 * Пример использования хука wp_insert_comment
 *
 * @param int        $id      Идентификатор комментария.
 * @param WP_Comment $comment Объект комментария.
 */
function wpdocs_wp_insert_comment_example( $id, $comment ) {
    // Выполнение дополнительных действий с комментарием перед сохранением.
    // Например, изменение данных комментария.
    $comment_data = array(
        'comment_content' => 'Новый текст комментария',
    );
    wp_update_comment( $id, $comment_data );
}
add_action( 'wp_insert_comment', 'wpdocs_wp_insert_comment_example', 10, 2 );

В этом примере кода мы определяем функцию «wpdocs_wp_insert_comment_example», которая принимает два параметра: $id (идентификатор комментария) и $comment (объект комментария). Внутри функции мы можем выполнять дополнительные действия с комментарием перед сохранением. В данном случае мы используем функцию «wp_update_comment» для изменения текста комментария на «Новый текст комментария». Затем мы добавляем эту функцию в хук «wp_insert_comment» с приоритетом 10 и количеством параметров 2.

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

Создание комментария с помощью хука wp_insert_comment


function create_comment() {
    // Создаем новый комментарий
    $commentdata = array(
        'comment_post_ID' => 123, // ID поста, к которому привязан комментарий
        'comment_author' => 'John Doe', // Имя автора комментария
        'comment_author_email' => 'john.doe@example.com', // Email автора комментария
        'comment_author_url' => 'http://example.com', // URL автора комментария
        'comment_content' => 'This is a test comment', // Текст комментария
        'comment_approved' => 1, // Статус комментария (1 - одобрен, 0 - ожидает модерации)
    );
    // Вставляем комментарий в базу данных
    $comment_id = wp_insert_comment($commentdata);
    // Выводим ID созданного комментария
    echo 'Created comment ID: ' . $comment_id;
}
add_action('wp_insert_comment', 'create_comment', 10, 2);

В данном примере мы создаем новый комментарий с помощью хука wp_insert_comment. В функции create_comment мы создаем массив $commentdata, содержащий данные нового комментария. Затем мы вызываем функцию wp_insert_comment и передаем ей этот массив. Функция возвращает ID созданного комментария, который мы выводим на экран.

Изменение данных комментария с помощью хука wp_insert_comment


function update_comment($comment_id, $comment) {
    // Изменяем текст комментария
    $comment->comment_content = 'Updated comment content';
    // Обновляем комментарий в базе данных
    wp_update_comment($comment);
    // Выводим обновленный комментарий
    echo 'Updated comment: ' . get_comment_text($comment);
}
add_action('wp_insert_comment', 'update_comment', 10, 2);

В этом примере мы изменяем данные комментария с помощью хука wp_insert_comment. В функции update_comment мы получаем ID комментария и объект комментария. Затем мы изменяем текст комментария, вызываем функцию wp_update_comment для обновления комментария в базе данных и выводим обновленный комментарий на экран.

Удаление комментария с помощью хука wp_insert_comment


function delete_comment($comment_id, $comment) {
    // Удаляем комментарий из базы данных
    wp_delete_comment($comment_id);
    // Выводим сообщение об удалении комментария
    echo 'Deleted comment with ID: ' . $comment_id;
}
add_action('wp_insert_comment', 'delete_comment', 10, 2);

В этом примере мы удаляем комментарий с помощью хука wp_insert_comment. В функции delete_comment мы получаем ID комментария и объект комментария. Затем мы вызываем функцию wp_delete_comment для удаления комментария из базы данных и выводим сообщение об удалении на экран.

Отправка уведомления о новом комментарии с помощью хука wp_insert_comment


function send_notification($comment_id, $comment) {
    // Получаем данные о посте, к которому привязан комментарий
    $post = get_post($comment->comment_post_ID);
    // Формируем сообщение для уведомления
    $message = 'New comment on post "' . $post->post_title . '" by ' . $comment->comment_author;
    // Отправляем уведомление на email администратора
    wp_mail(get_option('admin_email'), 'New Comment', $message);
    // Выводим сообщение об отправке уведомления
    echo 'Notification sent for comment with ID: ' . $comment_id;
}
add_action('wp_insert_comment', 'send_notification', 10, 2);

В этом примере мы отправляем уведомление о новом комментарии с помощью хука wp_insert_comment. В функции send_notification мы получаем ID комментария и объект комментария. Затем мы получаем данные о посте, к которому привязан комментарий, формируем сообщение для уведомления и отправляем его на email администратора с помощью функции wp_mail. Наконец, мы выводим сообщение об отправке уведомления на экран.

Обновление счетчика комментариев с помощью хука wp_insert_comment


function update_comment_count($comment_id, $comment) {
    // Получаем данные о посте, к которому привязан комментарий
    $post = get_post($comment->comment_post_ID);
    // Получаем текущее значение счетчика комментариев
    $comment_count = $post->comment_count;
    // Увеличиваем счетчик комментариев на 1
    $comment_count++;
    // Обновляем значение счетчика комментариев
    wp_update_post(array(
        'ID' => $post->ID,
        'comment_count' => $comment_count,
    ));
    // Выводим обновленное значение счетчика комментариев
    echo 'Updated comment count for post "' . $post->post_title . '": ' . $comment_count;
}
add_action('wp_insert_comment', 'update_comment_count', 10, 2);

В этом примере мы обновляем счетчик комментариев с помощью хука wp_insert_comment. В функции update_comment_count мы получаем ID комментария и объект комментария. Затем мы получаем данные о посте, к которому привязан комментарий, получаем текущее значение счетчика комментариев, увеличиваем его на 1, обновляем значение счетчика комментариев с помощью функции wp_update_post и выводим обновленное значение на экран.

Вопросы и ответы

Как получить ID комментария после его вставки в базу данных?

После вставки комментария в базу данных WordPress, можно получить его ID с помощью хука wp_insert_comment. Для этого необходимо добавить функцию обратного вызова к данному хуку.

// Функция обратного вызова для хука wp_insert_comment
function get_comment_id( $id, $comment ) {
    // Получаем ID комментария
    $comment_id = $comment->comment_ID;
    
    // Выводим ID комментария
    echo 'Comment ID: ' . $comment_id;
}
add_action( 'wp_insert_comment', 'get_comment_id', 10, 2 );

Как изменить данные комментария перед его сохранением в базу данных?

Перед сохранением комментария в базу данных WordPress, можно изменить его данные с помощью хука wp_insert_comment. Для этого необходимо добавить функцию обратного вызова к данному хуку.

// Функция обратного вызова для хука wp_insert_comment
function modify_comment_data( $id, $comment ) {
    // Изменяем данные комментария
    $comment->comment_content = 'Modified comment content';
    
    // Возвращаем измененный комментарий
    return $comment;
}
add_filter( 'wp_insert_comment_data', 'modify_comment_data', 10, 2 );

Как добавить дополнительные поля в комментарий перед его сохранением в базу данных?

Перед сохранением комментария в базу данных WordPress, можно добавить дополнительные поля к комментарию с помощью хука wp_insert_comment. Для этого необходимо добавить функцию обратного вызова к данному хуку.

// Функция обратного вызова для хука wp_insert_comment
function add_extra_fields( $id, $comment ) {
    // Добавляем дополнительные поля к комментарию
    $comment->comment_meta['extra_field'] = 'Extra field value';
    
    // Возвращаем измененный комментарий
    return $comment;
}
add_filter( 'wp_insert_comment_data', 'add_extra_fields', 10, 2 );

Как проверить и изменить статус комментария перед его сохранением в базу данных?

Хук wp_insert_comment позволяет проверить и изменить статус комментария перед его сохранением в базу данных.

Для этого необходимо добавить функцию обратного вызова к хуку wp_insert_comment. В этой функции можно получить доступ к идентификатору комментария и объекту комментария.

function custom_comment_status( $id, $comment ) {
    // Проверяем и изменяем статус комментария
    if ( $comment->comment_author === 'admin' ) {
        $comment->comment_approved = 1; // Устанавливаем статус "одобрено"
    }
}
add_action( 'wp_insert_comment', 'custom_comment_status', 10, 2 );

Как добавить метаданные к комментарию после его сохранения в базу данных?

Хук wp_insert_comment также позволяет добавить метаданные к комментарию после его сохранения в базу данных.

Для этого необходимо добавить функцию обратного вызова к хуку wp_insert_comment. В этой функции можно получить доступ к идентификатору комментария и объекту комментария, чтобы добавить необходимые метаданные.

function add_comment_metadata( $id, $comment ) {
    // Добавляем метаданные к комментарию
    add_comment_meta( $id, 'meta_key', 'meta_value' );
}
add_action( 'wp_insert_comment', 'add_comment_metadata', 10, 2 );

Как выполнить дополнительные действия после сохранения комментария в базу данных?

Хук wp_insert_comment также позволяет выполнить дополнительные действия после сохранения комментария в базу данных.

Для этого необходимо добавить функцию обратного вызова к хуку wp_insert_comment. В этой функции можно получить доступ к идентификатору комментария и объекту комментария, чтобы выполнить необходимые действия.

function additional_comment_actions( $id, $comment ) {
    // Выполняем дополнительные действия после сохранения комментария
    // Например, отправляем уведомление администратору
    wp_mail( 'admin@example.com', 'New Comment', 'A new comment has been posted.' );
}
add_action( 'wp_insert_comment', 'additional_comment_actions', 10, 2 );

Как отменить сохранение комментария в базу данных?

Хук wp_insert_comment также позволяет отменить сохранение комментария в базу данных.

Для этого необходимо добавить функцию обратного вызова к хуку wp_insert_comment. В этой функции можно проверить условие и, если оно выполняется, вызвать функцию wp_die() для отмены сохранения комментария.

function cancel_comment_insertion( $id, $comment ) {
    // Проверяем условие и отменяем сохранение комментария
    if ( $comment->comment_content === 'spam' ) {
        wp_die( 'Sorry, your comment could not be saved.' );
    }
}
add_action( 'wp_insert_comment', 'cancel_comment_insertion', 10, 2 );

Хук wp_insert_comment предоставляет возможность проверить и изменить статус комментария перед его сохранением в базу данных, добавить метаданные к комментарию после его сохранения, выполнить дополнительные действия после сохранения комментария и отменить сохранение комментария в базу данных. Этот хук является мощным инструментом для управления комментариями в WordPress.

Связанные элементы

  • Функция wp_new_comment(): создает новый комментарий и добавляет его в базу данных.
  • Функция wp_allow_comment(): проверяет, разрешен ли комментарий на основе настроек сайта и других факторов.
  • Функция wp_update_comment(): обновляет данные комментария в базе данных.
  • Функция wp_delete_comment(): удаляет комментарий из базы данных.
  • Хук preprocess_comment: вызывается перед обработкой комментария и позволяет изменить его данные или отклонить комментарий.
  • Хук comment_post: вызывается после добавления комментария в базу данных и позволяет выполнить дополнительные действия с комментарием.
  • Хук comment_text: вызывается перед выводом текста комментария и позволяет изменить его содержимое.
  • Хук comment_form_before: вызывается перед выводом формы комментариев и позволяет добавить дополнительное содержимое перед формой.
  • Класс WP_Comment: представляет комментарий и содержит методы для работы с ним, такие как получение и установка свойств комментария.
  • Класс WP_Comment_Query: позволяет выполнять запросы к базе данных для получения комментариев с определенными параметрами.
Обсуждение