Функция 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 нового комментария или ошибку в случае неудачи. Используйте её вместе с хуками и фильтрами для гибкого управления комментариями на вашем сайте.