# wp_insert_comment()

URL: https://chugunov.pro/api-wordpress/functions/wp_insert_comment/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 4.4.0.

## Сигнатура

```php
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`

```php
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.

## Связанные

Использует: [`wp_cache_delete_multiple`](https://chugunov.pro/api-wordpress/functions/wp_cache_delete_multiple/), [`get_gmt_from_date`](https://chugunov.pro/api-wordpress/functions/get_gmt_from_date/), [`current_time`](https://chugunov.pro/api-wordpress/functions/current_time/), `wpdb::insert`, [`clean_comment_cache`](https://chugunov.pro/api-wordpress/functions/clean_comment_cache/), [`wp_update_comment_count`](https://chugunov.pro/api-wordpress/functions/wp_update_comment_count/), [`add_comment_meta`](https://chugunov.pro/api-wordpress/functions/add_comment_meta/), [`wp_unslash`](https://chugunov.pro/api-wordpress/functions/wp_unslash/), [`do_action`](https://chugunov.pro/api-wordpress/functions/do_action/), [`get_comment`](https://chugunov.pro/api-wordpress/functions/get_comment/).
Используется в: `WP_REST_Comments_Controller::create_item`, [`wp_new_comment`](https://chugunov.pro/api-wordpress/functions/wp_new_comment/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/wp_insert_comment/
