wp_new_comment()
Добавляет новый комментарий в Базу Данных. Фильтрует данные.
Фильтрует все данные, чтобы убедится что все поля переданы правильно, некоторые поля создаются функцией и их указывать не нужно (IP адресс, User Agent).
Задача функции предварительно обработать данные комментария и передать их wp_insert_comment().
Смотрите также функцию wp_handle_comment_submission(), которая является оберткой для этой функции.
- Использует хук-событие: comment_post, который передает ID комментария и срабатывает сразу после добавления комментария.
- Использует фильтр: preprocess_comment благодаря которому можно изменить данные комментария перед тем как функция начнет их обрабатывать.
Хуки из функции
Возвращает
int|false|WP_Error
. ID комментария, который был добавлен. Или false в случае неудачи.
Использование
wp_new_comment( $commentdata, $wp_error );
- $commentdata(массив) (обязательный)
Ассоциативный массив данных комментария. Ключи массива — поля таблицы в БД.
Поле
comment_ID
указывать не нужно — оно создается автоматически. Остальные поля смотрите в описании wp_insert_comment().Аргумент
comment_approved
всегда равен значению функции wp_allow_comment(). Т.е. если мы укажем его вручную, то указанное значение будет проигнорировано.Чтобы несмотря ни на что указать значение
comment_approved
, можно воспользоваться фильтром: pre_comment_approved:add_filter( 'pre_comment_approved', fn()=> 1 ); // или add_filter( 'pre_comment_approved', fn()=> 0 );
- $wp_error(логический)
- true = не выполнять wp_die(), а вернуть WP_Error в случае ошибки. C WP 4.7.
По умолчанию: false
Примеры
#1 Пример добавления нового комментария
Комментарий будет добавлен к посту 418 и будет ответом на комментарий 315:
// создаем массив данных нового комментария $commentdata = [ 'comment_post_ID' => 418, 'comment_author' => 'Проверка', 'comment_author_email' => 'milo@mail.ru', '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' => 'admin', 'comment_author_email' => 'admin@admin.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; 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 );
Заметки
- Смотрите: wp_insert_comment()
- Global. wpdb. $wpdb WordPress database abstraction object.
Список изменений
С версии 1.5.0 | Введена. |
С версии 4.3.0 | Introduced the comment_agent and comment_author_IP arguments. |
С версии 4.7.0 | The $avoid_die parameter was added, allowing the function to return a WP_Error object instead of dying. |
С версии 5.5.0 | The $avoid_die parameter was renamed to $wp_error. |
С версии 5.5.0 | Introduced the comment_type argument. |