wp_delete_comment( int|WP_Comment $comment_id, bool $force_delete = false )
Trashes or deletes a comment.
Description
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.
Parameters
- $comment_id
-
(Required) Comment ID or WP_Comment object.
- $force_delete
-
(Optional) Whether to bypass Trash and force deletion.
Default value: false
Return
(bool) True on success, false on failure.
Source
File: wp-includes/comment.php
function wp_delete_comment($comment_id, $force_delete = false) {
global $wpdb;
if (!$comment = get_comment($comment_id))
return false;
if ( !$force_delete && EMPTY_TRASH_DAYS && !in_array( wp_get_comment_status( $comment ), array( 'trash', 'spam' ) ) )
return wp_trash_comment($comment_id);
/**
* Fires immediately before a comment is deleted from the database.
*
* @since WP-1.2.0
* @since WP-4.9.0 Added the `$comment` parameter.
*
* @param int $comment_id The comment ID.
* @param WP_Comment $comment The comment to be deleted.
*/
do_action( 'delete_comment', $comment->comment_ID, $comment );
// Move children up a level.
$children = $wpdb->get_col( $wpdb->prepare("SELECT comment_ID FROM $wpdb->comments WHERE comment_parent = %d", $comment->comment_ID) );
if ( !empty($children) ) {
$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->get_col( $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->delete( $wpdb->comments, array( 'comment_ID' => $comment->comment_ID ) ) )
return false;
/**
* Fires immediately after a comment is deleted from the database.
*
* @since WP-2.9.0
* @since WP-4.9.0 Added the `$comment` parameter.
*
* @param int $comment_id The comment ID.
* @param WP_Comment $comment The deleted comment.
*/
do_action( 'deleted_comment', $comment->comment_ID, $comment );
$post_id = $comment->comment_post_ID;
if ( $post_id && $comment->comment_approved == 1 )
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;
}
Changelog
Version | Description |
---|---|
2.0.0 | Introduced. |