wp_insert_comment() WordPress Function

The wp_insert_comment() function is used to create new comments for a post. The function takes an array of arguments, which can include the comment author's name, email address, URL, and comment text. Comments are then stored in the database and displayed on the front-end of the site.

wp_insert_comment( array $commentdata ) #

Inserts a comment into the database.


Parameters

$commentdata

(array)(Required)Array of arguments for inserting a new comment.

  • 'comment_agent'
    (string) The HTTP user agent of the $comment_author when the comment was submitted. Default empty.
  • 'comment_approved'
    (int|string) Whether the comment has been approved. Default 1.
  • 'comment_author'
    (string) The name of the author of the comment. Default empty.
  • 'comment_author_email'
    (string) The email address of the $comment_author. Default empty.
  • 'comment_author_IP'
    (string) The IP address of the $comment_author. Default empty.
  • 'comment_author_url'
    (string) The URL address of the $comment_author. Default empty.
  • 'comment_content'
    (string) The content of the comment. Default empty.
  • 'comment_date'
    (string) The date the comment was submitted. To set the date manually, $comment_date_gmt must also be specified. Default is the current time.
  • 'comment_date_gmt'
    (string) The date the comment was submitted in the GMT timezone. Default is $comment_date in the site's GMT timezone.
  • 'comment_karma'
    (int) The karma of the comment. Default 0.
  • 'comment_parent'
    (int) ID of this comment's parent, if any. Default 0.
  • 'comment_post_ID'
    (int) ID of the post that relates to the comment, if any. Default 0.
  • 'comment_type'
    (string) Comment type. Default 'comment'.
  • 'comment_meta'
    (array) Optional. Array of key/value pairs to be stored in commentmeta for the new comment.
  • 'user_id'
    (int) ID of the user who submitted the comment. Default 0.


Top ↑

Return

(int|false) The new comment's ID on success, false on failure.


Top ↑

Source

File: wp-includes/comment.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 = compact( 'comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_author_IP', '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 == $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;
}


Top ↑

Changelog

Changelog
VersionDescription
5.5.0Default value for $comment_type argument changed to comment.
4.4.0Introduced the $comment_meta argument.
2.0.0Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by theĀ Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.

Show More
Show More