функция
since 4.4.0
wp_insert_comment()
Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.
Сигнатура
wp_insert_comment( array $commentdata ): int|false
Описание
Вставляет комментарий в базу данных.
Параметры
$commentdata
array
обязательный
Массив аргументов для вставки нового комментария.
comment_agent stringHTTP user agent $comment_author на момент отправки комментария. По умолчанию пусто.
comment_approved int|stringОдобрен ли комментарий. По умолчанию 1.
comment_author stringИмя автора комментария. По умолчанию пусто.
comment_author_email stringАдрес электронной почты $comment_author. По умолчанию пусто.
comment_author_IP stringIP-адрес $comment_author. По умолчанию пусто.
comment_author_url stringURL-адрес $comment_author. По умолчанию пусто.
comment_content stringСодержимое комментария. По умолчанию пусто.
comment_date stringДата отправки комментария. Чтобы задать дату вручную, необходимо также указать $comment_date_gmt.
По умолчанию — текущее время.
comment_date_gmt stringДата отправки комментария в часовом поясе GMT.
По умолчанию — $comment_date в часовом поясе GMT сайта.
comment_karma intКарма комментария. По умолчанию 0.
comment_parent intИдентификатор родителя этого комментария, если есть. По умолчанию 0.
comment_post_ID intИдентификатор записи, к которой относится комментарий, если есть.
По умолчанию 0.
comment_type stringТип комментария. По умолчанию 'comment'.
comment_meta arrayНеобязательно. Массив пар ключ/значение для сохранения в commentmeta для нового комментария.
user_id intИдентификатор пользователя, отправившего комментарий. По умолчанию 0.
Возвращаемое значение
int|false
Исходный код
wp-includes/comment.php:2098
function wp_insert_comment( $commentdata ) {
global $wpdb;
$data = wp_unslash( $commentdata );
$comment_author = ! isset( $data['comment_author'] ) ? '' : $data['comment_author'];
$comment_author_email = ! isset( $data['comment_author_email'] ) ? '' : $data['comment_author_email'];
$comment_author_url = ! isset( $data['comment_author_url'] ) ? '' : $data['comment_author_url'];
$comment_author_ip = ! isset( $data['comment_author_IP'] ) ? '' : $data['comment_author_IP'];
$comment_date = ! isset( $data['comment_date'] ) ? current_time( 'mysql' ) : $data['comment_date'];
$comment_date_gmt = ! isset( $data['comment_date_gmt'] ) ? get_gmt_from_date( $comment_date ) : $data['comment_date_gmt'];
$comment_post_id = ! isset( $data['comment_post_ID'] ) ? 0 : $data['comment_post_ID'];
$comment_content = ! isset( $data['comment_content'] ) ? '' : $data['comment_content'];
$comment_karma = ! isset( $data['comment_karma'] ) ? 0 : $data['comment_karma'];
$comment_approved = ! isset( $data['comment_approved'] ) ? 1 : $data['comment_approved'];
$comment_agent = ! isset( $data['comment_agent'] ) ? '' : $data['comment_agent'];
$comment_type = empty( $data['comment_type'] ) ? 'comment' : $data['comment_type'];
$comment_parent = ! isset( $data['comment_parent'] ) ? 0 : $data['comment_parent'];
$user_id = ! isset( $data['user_id'] ) ? 0 : $data['user_id'];
$compacted = array(
'comment_post_ID' => $comment_post_id,
'comment_author_IP' => $comment_author_ip,
);
$compacted += compact(
'comment_author',
'comment_author_email',
'comment_author_url',
'comment_date',
'comment_date_gmt',
'comment_content',
'comment_karma',
'comment_approved',
'comment_agent',
'comment_type',
'comment_parent',
'user_id'
);
if ( ! $wpdb->insert( $wpdb->comments, $compacted ) ) {
return false;
}
$id = (int) $wpdb->insert_id;
if ( 1 === (int) $comment_approved ) {
wp_update_comment_count( $comment_post_id );
$data = array();
foreach ( array( 'server', 'gmt', 'blog' ) as $timezone ) {
$data[] = "lastcommentmodified:$timezone";
}
wp_cache_delete_multiple( $data, 'timeinfo' );
}
clean_comment_cache( $id );
$comment = get_comment( $id );
// If metadata is provided, store it.
if ( isset( $commentdata['comment_meta'] ) && is_array( $commentdata['comment_meta'] ) ) {
foreach ( $commentdata['comment_meta'] as $meta_key => $meta_value ) {
add_comment_meta( $comment->comment_ID, $meta_key, $meta_value, true );
}
}
/**
* Fires immediately after a comment is inserted into the database.
*
* @since 2.8.0
*
* @param int $id The comment ID.
* @param WP_Comment $comment Comment object.
*/
do_action( 'wp_insert_comment', $id, $comment );
return $id;
}
История изменений
| Версия | Описание |
|---|---|
| 5.5.0 | Default value for $comment_type argument changed to comment. |
| 4.4.0 | Introduced the $comment_meta argument. |
| 2.0.0 | Introduced. |

