wp_handle_comment_submission() – Handles the submission of a comment, usually posted to wp-comments-post.php via a comment form.

You appear to be a bot. Output may be restricted

Description

Handles the submission of a comment, usually posted to wp-comments-post.php via a comment form.

This function expects unslashed data, as opposed to functions such as wp_new_comment() which expect slashed data.

Usage

$WP_Comment|WP_Error = wp_handle_comment_submission( $comment_data );

Parameters

$comment_data
( array ) required – { Comment data.
$comment_post_ID
( string|int ) required – The ID of the post that relates to the comment.
$author
( string ) required – The name of the comment author.
$email
( string ) required – The comment author email address.
$url
( string ) required – The comment author URL.
$comment
( string ) required – The content of the comment.
$comment_parent
( string|int ) required – The ID of this comment's parent, if any. Default 0.
$_wp_unfiltered_html_comment
( string ) required – The nonce value for allowing unfiltered HTML. }

Returns

WP_Comment|WP_Error A WP_Comment object on success, a WP_Error object on failure.

Source

File name: wordpress/wp-includes/comment.php
Lines:

1 to 100 of 199
function wp_handle_comment_submission( $comment_data ) {

  $comment_post_ID      = 0;
  $comment_parent       = 0;
  $user_ID              = 0;
  $comment_author       = null;
  $comment_author_email = null;
  $comment_author_url   = null;
  $comment_content      = null;

  if ( isset( $comment_data['comment_post_ID'] ) ) {
    $comment_post_ID = (int) $comment_data['comment_post_ID'];
  }
  if ( isset( $comment_data['author'] ) && is_string( $comment_data['author'] ) ) {
    $comment_author = trim( strip_tags( $comment_data['author'] ) );
  }
  if ( isset( $comment_data['email'] ) && is_string( $comment_data['email'] ) ) {
    $comment_author_email = trim( $comment_data['email'] );
  }
  if ( isset( $comment_data['url'] ) && is_string( $comment_data['url'] ) ) {
    $comment_author_url = trim( $comment_data['url'] );
  }
  if ( isset( $comment_data['comment'] ) && is_string( $comment_data['comment'] ) ) {
    $comment_content = trim( $comment_data['comment'] );
  }
  if ( isset( $comment_data['comment_parent'] ) ) {
    $comment_parent = absint( $comment_data['comment_parent'] );
  }

  $post = get_post( $comment_post_ID );

  if ( empty( $post->comment_status ) ) {

    
/**
 * Fires when a comment is attempted on a post that does not exist.
 *
 * @since 1.5.0
 *
 * @param int $comment_post_ID Post ID.
 */
    do_action( 'comment_id_not_found', $comment_post_ID );

    return new WP_Error( 'comment_id_not_found' );

  }

  // get_post_status() will get the parent status for attachments.
  $status = get_post_status( $post );

  if ( ( 'private' === $status ) && ! current_user_can( 'read_post', $comment_post_ID ) ) {
    return new WP_Error( 'comment_id_not_found' );
  }

  $status_obj = get_post_status_object( $status );

  if ( ! comments_open( $comment_post_ID ) ) {

    
/**
 * Fires when a comment is attempted on a post that has comments closed.
 *
 * @since 1.5.0
 *
 * @param int $comment_post_ID Post ID.
 */
    do_action( 'comment_closed', $comment_post_ID );

    return new WP_Error( 'comment_closed', __( 'Sorry, comments are closed for this item.' ), 403 );

  } elseif ( 'trash' === $status ) {

    
/**
 * Fires when a comment is attempted on a trashed post.
 *
 * @since 2.9.0
 *
 * @param int $comment_post_ID Post ID.
 */
    do_action( 'comment_on_trash', $comment_post_ID );

    return new WP_Error( 'comment_on_trash' );

  } elseif ( ! $status_obj->public && ! $status_obj->private ) {

    
/**
 * Fires when a comment is attempted on a post in draft mode.
 *
 * @since 1.5.1
 *
 * @param int $comment_post_ID Post ID.
 */
    do_action( 'comment_on_draft', $comment_post_ID );

    if ( current_user_can( 'read_post', $comment_post_ID ) ) {
      return new WP_Error( 'comment_on_draft', __( 'Sorry, comments are not allowed for this item.' ), 403 );
    } else {
      return new WP_Error( 'comment_on_draft' );
    }
  } elseif ( post_password_required( $comment_post_ID ) ) {

    
/**
 

 View on GitHub View on Trac