WP_NEW_COMMENT() │ WP 1.5.0
Функция wp_new_comment() добавляет новый комментарий в базу данных WordPress. Эта функция выполняет несколько шагов, прежде чем сохранить комментарий, чтобы убедиться, что все данные корректны и безопасны.
Как работает функция
-
Фильтрация данных: Перед тем как вставить комментарий, функция проверяет и очищает данные, используя фильтры:
preprocess_comment: Позволяет изменять данные комментария перед обработкой.comment_post: Вызывается после успешной вставки комментария, сохраняет ID комментария и статус одобрения.
-
Проверка адреса: Если ваш сайт находится за прокси-сервером, убедитесь, что адрес пользователя (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.