Make WordPress Core

Changeset 12141


Ignore:
Timestamp:
11/04/2009 05:39:53 PM (17 years ago)
Author:
ryan
Message:

Fix comment and postmeta delete queries when deleting a post. see #11073

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/post.php

    r12130 r12141  
    12031203        $wpdb->update( $wpdb->posts, $parent_data, $parent_where + array( 'post_type' => 'attachment' ) );
    12041204
    1205         $commentids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = %d", $postid ));
    1206         do_action( 'delete_comment', $commentids );
    1207         $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->comments WHERE comment_ID IN(%s)", implode( ',', $commentids ) ));
    1208         do_action( 'deleted_comment', $commentids );
    1209 
    1210         $postmetaids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d ", $post_id ));
    1211         do_action( 'delete_postmeta', $postmetaids );
    1212         $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE meta_id IN(%s)", implode( ',', $postmetaids ) ));
    1213         do_action( 'deleted_postmeta', $postmetaids );
     1205        $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = %d", $postid ));
     1206        if ( ! empty($comment_ids) ) {
     1207                do_action( 'delete_comment', $comment_ids );
     1208                $in_comment_ids = "'" . implode("', '", $comment_ids) . "'";
     1209                $wpdb->query( "DELETE FROM $wpdb->comments WHERE comment_ID IN($in_comment_ids)" );
     1210                do_action( 'deleted_comment', $comment_ids );
     1211        }
     1212
     1213        $post_meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d ", $postid ));
     1214        if ( !empty($post_meta_ids) ) {
     1215                do_action( 'delete_postmeta', $post_meta_ids );
     1216                $in_post_meta_ids = "'" . implode("', '", $post_meta_ids) . "'";
     1217                $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_id IN($in_post_meta_ids)" );
     1218                do_action( 'deleted_postmeta', $post_meta_ids );
     1219        }
    12141220
    12151221        do_action( 'delete_post', $post_id );
     
    27302736        $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE meta_key = '_thumbnail_id' AND meta_value = %d", $post_id ));
    27312737
    2732         $commentids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = %d", $post_id ));
    2733         do_action( 'delete_comment', $commentids );
    2734         $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->comments WHERE comment_ID IN(%s)", implode( ',', $commentids ) ));
    2735         do_action( 'deleted_comment', $commentids );
    2736 
    2737         $postmetaids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d ", $post_id ));
    2738         do_action( 'delete_postmeta', $postmetaids );
    2739         $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE meta_id IN(%s)", implode( ',', $postmetaids ) ));
    2740         do_action( 'deleted_postmeta', $postmetaids );
     2738        $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = %d", $post_id ));
     2739        if ( ! empty($comment_ids) ) {
     2740                do_action( 'delete_comment', $comment_ids );
     2741                $in_comment_ids = "'" . implode("', '", $comment_ids) . "'";
     2742                $wpdb->query( "DELETE FROM $wpdb->comments WHERE comment_ID IN($in_comment_ids)" );
     2743                do_action( 'deleted_comment', $comment_ids );
     2744        }
     2745
     2746        $post_meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d ", $post_id ));
     2747        if ( !empty($post_meta_ids) ) {
     2748                do_action( 'delete_postmeta', $post_meta_ids );
     2749                $in_post_meta_ids = "'" . implode("', '", $post_meta_ids) . "'";
     2750                $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_id IN($in_post_meta_ids)" );
     2751                do_action( 'deleted_postmeta', $post_meta_ids );
     2752        }
    27412753
    27422754        do_action( 'delete_post', $post_id );
Note: See TracChangeset for help on using the changeset viewer.