Описание
Добавляет новый комментарий в Базу Данных. Фильтрует данные.
wp_new_comment() фильтрует все данные, чтобы убедится что все поля переданы правильно, некоторые поля создаются функцией и их указывать не нужно (IP адресс, User Agent).
Эта функция работает на основе функции wp_insert_comment(). Задача этой функции предварительно обработать данные комментария и передать их wp_insert_comment().
Функция возвращает ID комментария, который был добавлен.
Использование
<?php wp_new_comment( $commentdata ) ?>
Параметры
- $commentdata (массив) (обязательный)
- Ассоциативный массив данных комментария. Ключи массива — поля таблицы в БД. Поле comment_ID указывать не нужно — оно создается автоматически.
По умолчанию: нет
Примеры
1. Пример добавления нового комментария. Комментарий будет добавлен к посту 418 и будет ответом на комментарий 315:
// создаем массив данных нового комментария
$commentdata = array(
'comment_post_ID' => 418
,'comment_author' => 'Проверка'
,'comment_author_email' => 'milo@mail.ru'
,'comment_author_url' => 'http://site.ru'
,'comment_content' => 'Текст нового комментария'
,'comment_type' => ''
,'comment_parent' => 315
,'user_ID' => 0
)
// добавляем данные в Базу Данных
wp_new_comment( $commentdata );
2. Пример добавления комментария с использованием функции wp_insert_comment(). В этом случая мы должны сами определить абсолютно все поля комментария:
$data = array(
'comment_post_ID' => 1,
'comment_author' => 'admin',
'comment_author_email' => 'admin@admin.com',
'comment_author_url' => 'http://',
'comment_content' => 'текст коммента',
'comment_type' => '',
'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);
На заметку
- Использует хук (action) comment_post, который передает ID комментария и срабатывает сразу после добавления комментария.
- Использует фильтр: preprocess_comment благодаря которому можно изменить данные комментария перед тем как функция начнет их обрабатывать.
wp_new_comment()
из файла: /wp-includes/comment.php WP 3.3.2function wp_new_comment( $commentdata ) {
$commentdata = apply_filters('preprocess_comment', $commentdata);
$commentdata['comment_post_ID'] = (int) $commentdata['comment_post_ID'];
if ( isset($commentdata['user_ID']) )
$commentdata['user_id'] = $commentdata['user_ID'] = (int) $commentdata['user_ID'];
elseif ( isset($commentdata['user_id']) )
$commentdata['user_id'] = (int) $commentdata['user_id'];
$commentdata['comment_parent'] = isset($commentdata['comment_parent']) ? absint($commentdata['comment_parent']) : 0;
$parent_status = ( 0 < $commentdata['comment_parent'] ) ? wp_get_comment_status($commentdata['comment_parent']) : '';
$commentdata['comment_parent'] = ( 'approved' == $parent_status || 'unapproved' == $parent_status ) ? $commentdata['comment_parent'] : 0;
$commentdata['comment_author_IP'] = preg_replace( '/[^0-9a-fA-F:., ]/', '',$_SERVER['REMOTE_ADDR'] );
$commentdata['comment_agent'] = substr($_SERVER['HTTP_USER_AGENT'], 0, 254);
$commentdata['comment_date'] = current_time('mysql');
$commentdata['comment_date_gmt'] = current_time('mysql', 1);
$commentdata = wp_filter_comment($commentdata);
$commentdata['comment_approved'] = wp_allow_comment($commentdata);
$comment_ID = wp_insert_comment($commentdata);
do_action('comment_post', $comment_ID, $commentdata['comment_approved']);
if ( 'spam' !== $commentdata['comment_approved'] ) { // If it's spam save it silently for later crunching
if ( '0' == $commentdata['comment_approved'] )
wp_notify_moderator($comment_ID);
$post = &get_post($commentdata['comment_post_ID']); // Don't notify if it's your own comment
if ( get_option('comments_notify') && $commentdata['comment_approved'] && ( ! isset( $commentdata['user_id'] ) || $post->post_author != $commentdata['user_id'] ) )
wp_notify_postauthor($comment_ID, isset( $commentdata['comment_type'] ) ? $commentdata['comment_type'] : '' );
}
return $comment_ID;
}Ещё из раздела
Смотрите также: Функции WordPress и Теги Шаблона.
Сегодня иметь сайт необходимая часть для любого более-менее уважающего себя предприятия. Заказать сайт под ключ прямо сейчас вы всегда можете воспользовавшись поиском в сети подходящей по ценам веб-студии.
У вас в исходном коде первого примера ошибка в коде - нужно:
вместо
Спасибо, поправил.
А можно ли привязывать комментарий не к посту, а к фото в галерее NEXTGEN GALLERY?
Теоретически да, но как конкретно не знаю.