wp_delete_comment() – Trashes or deletes a comment.

You appear to be a bot. Output may be restricted

Description

Trashes or deletes a comment.

The comment is moved to Trash instead of permanently deleted unless Trash is disabled, item is already in the Trash, or $force_delete is true. The post comment count will be updated if the comment was approved and has a post ID available.

Usage

$bool = wp_delete_comment( $comment_id, $force_delete );

Parameters

$comment_id
( int|WP_Comment ) required – Comment ID or WP_Comment object.
$force_delete
( bool ) optional – Whether to bypass Trash and force deletion. Default false.

Returns

bool True on success, false on failure.

Source

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


Lines:

1 to 69 of 69
function wp_delete_comment( $comment_id, $force_delete = false ) {
  global $wpdb;

  $comment = get_comment( $comment_id );
  if ( ! $comment ) {
    return false;
  }

  if ( ! $force_delete && EMPTY_TRASH_DAYS && ! in_array( wp_get_comment_status( $comment ), array( 'trash', 'spam' ), true ) ) {
    return wp_trash_comment( $comment_id );
  }

  
/**
 * Fires immediately before a comment is deleted from the database.
 *
 * @since 1.2.0
 * @since 4.9.0 Added the `$comment` parameter.
 *
 * @param string     $comment_id The comment ID as a numeric string.
 * @param WP_Comment $comment    The comment to be deleted.
 */
  do_action( 'delete_comment', $comment->comment_ID, $comment );

  // Move children up a level.
  $children = $wpdb->wpdb::get_col( $wpdb->wpdb::prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_parent = %d", $comment->comment_ID ) );
  if ( ! empty( $children ) ) {
    $wpdb->wpdb::update( $wpdb->comments, array( 'comment_parent' => $comment->comment_parent ), array( 'comment_parent' => $comment->comment_ID ) );
    clean_comment_cache( $children );
  }

  // Delete metadata.
  $meta_ids = $wpdb->wpdb::get_col( $wpdb->wpdb::prepare( "SELECT meta_id FROM $wpdb->commentmeta WHERE comment_id = %d", $comment->comment_ID ) );
  foreach ( $meta_ids as $mid ) {
    delete_metadata_by_mid( 'comment', $mid );
  }

  if ( ! $wpdb->wpdb::delete( $wpdb->comments, array( 'comment_ID' => $comment->comment_ID ) ) ) {
    return false;
  }

  
/**
 * Fires immediately after a comment is deleted from the database.
 *
 * @since 2.9.0
 * @since 4.9.0 Added the `$comment` parameter.
 *
 * @param string     $comment_id The comment ID as a numeric string.
 * @param WP_Comment $comment    The deleted comment.
 */
  do_action( 'deleted_comment', $comment->comment_ID, $comment );

  $post_id = $comment->comment_post_ID;
  if ( $post_id && 1 == $comment->comment_approved ) {
    wp_update_comment_count( $post_id );
  }

  clean_comment_cache( $comment->comment_ID );

  
/** This action is documented in wp-includes/comment.php */
  do_action( 'wp_set_comment_status', $comment->comment_ID, 'delete' );

  wp_transition_comment_status( 'delete', $comment->comment_approved, $comment );

  return true;
}
 

 View on GitHub View on Trac