Добавление нового комментария в базу данных WordPress с помощью wp_new_comment()

WP_NEW_COMMENT() │ WP 1.5.0

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

Как работает функция

  1. Фильтрация данных: Перед тем как вставить комментарий, функция проверяет и очищает данные, используя фильтры:

    • preprocess_comment: Позволяет изменять данные комментария перед обработкой.
    • comment_post: Вызывается после успешной вставки комментария, сохраняет ID комментария и статус одобрения.
  2. Проверка адреса: Если ваш сайт находится за прокси-сервером, убедитесь, что адрес пользователя (REMOTE_ADDR) правильно настроен в wp-config.php.

Возврат значений

Функция возвращает:

  • int: ID комментария, если вставка прошла успешно.
  • false или WP_Error: В случае ошибки.

Использование функции

Синтаксис

wp_new_comment( $commentdata, $wp_error );

Параметры

  • $commentdata (массив): Обязательный параметр. Содержит данные комментария.

    • comment_author (строка): Имя автора комментария.
    • comment_author_email (строка): Email автора комментария.
    • comment_author_url (строка): URL автора комментария.
    • comment_content (строка): Текст комментария.
    • comment_date (строка): Дата, когда был оставлен комментарий. По умолчанию — текущее время.
    • comment_date_gmt (строка): Дата в GMT. По умолчанию — значение comment_date в GMT.
    • comment_type (строка): Тип комментария. По умолчанию — 'comment'.
    • comment_parent (int): ID родительского комментария, если есть.
    • comment_post_ID (int): ID поста, к которому относится комментарий.
    • user_id (int): ID пользователя, оставившего комментарий.
    • comment_agent (строка): Информация о браузере автора комментария.
    • comment_author_IP (строка): IP адрес автора комментария.
  • $wp_error (true|false): Определяет, следует ли возвращать ошибки в виде объекта WP_Error (по умолчанию false).

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

Пример 1: Добавление нового комментария

// Создаем массив с данными нового комментария
$commentdata = [
    'comment_post_ID'      => 418,
    'comment_author'       => 'Проверка',
    'comment_author_email' => 'example@example.com',
    'comment_author_url'   => 'http://example.com',
    'comment_content'      => 'Текст нового комментария',
    'comment_type'         => 'comment',
    'comment_parent'       => 315,
    'user_ID'              => 0,
];

// Добавляем данные в базу данных
wp_new_comment( $commentdata );

Пример 2: Использование функции wp_insert_comment()

Если вы хотите полностью указать данные комментария самостоятельно, используйте следующие параметры:

$data = [
    'comment_post_ID'      => 1,
    'comment_author'       => 'администратор',
    'comment_author_email' => 'example@example.com',
    'comment_author_url'   => 'http://',
    'comment_content'      => 'Текст комментария',
    'comment_type'         => 'comment',
    'comment_parent'       => 0,
    'user_id'              => 1,
    'comment_author_IP'    => '127.0.0.1',
    'comment_agent'        => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'comment_date'         => current_time('mysql'),
    'comment_approved'     => 1,
];

wp_insert_comment( $data );

Важно знать: Ограничения для comment_type

Если вы пытаетесь установить comment_type на одно из следующих слов: all, comment, comments, pings — комментарий сохранится, но вы не сможете извлечь его с помощью обычных функций комментариев WordPress.

Заметки

  • Обратите внимание: для работы функции должны быть установлены соответствующие параметры для базы данных.
  • Используйте глобальную переменную $wpdb, чтобы взаимодействовать с базой данных WordPress.

Изменения в Changelog

  • 1.5.0: Функция была введена.
  • 4.3.0: Параметры comment_agent и comment_author_IP добавлены.
  • 5.5.0: Параметр $wp_error добавлен для обр��ботки ошибок.

Теперь у вас есть полное понимание функции wp_new_comment() и того, как ее использовать для работы с комментариями в WordPress.

Leave a Reply

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