Функция wp_new_comment() используется для добавления нового комментария в базу данных WordPress. Эта функция позволяет программно создавать комментарии и обрабатывать их перед вставкой в базу данных.
wp_new_comment( array $commentdata, bool $wp_error = false ): int|false|WP_Error
Описание
Функция wp_new_comment() добавляет новый комментарий в базу данных, предварительно фильтруя данные, чтобы убедиться в их корректности. После добавления комментария функция вызывает хук comment_post и фильтр preprocess_comment. Если комментарий одобрен, его статус обновляется автоматически.
Важно: Функция использует REMOTE_ADDR напрямую, поэтому, если вы работаете за прокси, убедитесь, что настройки в wp-config.php соответствуют вашему окружению.
Параметры
Функция принимает два параметра:
$comment_data(массив) — Массив данных для создания нового комментария. Ключи массива включают:comment_author(string) — Имя автора комментария.comment_author_email(string) — Электронная почта автора комментария.comment_author_url(string) — URL-адрес автора комментария.comment_content(string) — Содержимое комментария.comment_date(string) — Дата создания комментария. По умолчанию используется текущее время.comment_date_gmt(string) — Дата в формате GMT. По умолчанию — значениеcomment_dateв GMT.comment_type(string) — Тип комментария. По умолчанию ‘comment’.comment_parent(integer) — ID родительского комментария, если это ответ. По умолчанию 0.comment_post_ID(integer) — ID поста или страницы, к которому привязан комментарий.user_id(integer) — ID пользователя, оставившего комментарий. По умолчанию 0.comment_agent(string) — User agent автора комментария. По умолчанию значение изHTTP_USER_AGENT.comment_author_IP(string) — IP-адрес автора комментария в формате IPv4. По умолчанию значение изREMOTE_ADDR.
$wp_error(bool) — Необязательный параметр. Еслиtrue, функция возвращает объектWP_Errorв случае ошибки вместо вызоваwp_die(). По умолчаниюfalse.
Возвращаемое значение
Функция возвращает:
- int — ID нового комментария при успешном выполнении.
 - false — в случае неудачи.
 - WP_Error — если установлен параметр 
$wp_errorвtrueи произошла ошибка. 
Пример 1: Добавление нового комментария
$comment_data = array(
    'comment_post_ID'      => 418,
    'comment_author'       => 'Проверка',
    'comment_author_email' => '[email protected]',
    'comment_author_url'   => 'http://example.com',
    'comment_content'      => 'Текст нового комментария',
    'comment_type'         => 'comment',
    'comment_parent'       => 315,
    'user_id'              => 0,
);
$comment_id = wp_new_comment($comment_data);
if ($comment_id) {
    echo 'Комментарий успешно добавлен. ID: ' . $comment_id;
} else {
    echo 'Ошибка при добавлении комментария.';
}
Пример 2: Использование wp_insert_comment() для полного контроля
$data = array(
    'comment_post_ID'      => 1,
    'comment_author'       => 'admin',
    'comment_author_email' => '[email protected]',
    '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; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)',
    'comment_date'         => current_time('mysql'),
    'comment_approved'     => 1,
);
wp_insert_comment($data);
Пример 3: Добавление комментария с использованием фильтра
add_filter('pre_comment_approved', function() {
    return 1; // Автоматическое одобрение комментариев
});
$comment_data = array(
    'comment_post_ID'      => 1,
    'comment_author'       => 'Example Author',
    'comment_author_email' => '[email protected]',
    'comment_content'      => 'This is a sample comment.',
);
$comment_id = wp_new_comment($comment_data);
Важные замечания
- Функция 
wp_new_comment()фильтрует и обрабатывает данные комментария перед вставкой в базу данных. - Фильтр 
preprocess_commentпозволяет изменить данные комментария перед тем, как они будут обработаны. - Хук 
comment_postвызывается сразу после добавления комментария. - Используйте фильтр 
pre_comment_approved, если вам нужно изменить статус одобрения комментария. 
Хуки и фильтры
- Фильтр: 
preprocess_comment— Позволяет изменить данные комментария перед их обработкой. - Хук: 
comment_post— Срабатывает после добавления комментария и передает ID комментария и статус одобрения. 
Заключение
Функция wp_new_comment() в WordPress позволяет программно добавлять комментарии в базу данных, предварительно фильтруя и обрабатывая данные. Она возвращает ID нового комментария или ошибку в случае неудачи. Используйте её вместе с хуками и фильтрами для гибкого управления комментариями на вашем сайте.