Make WordPress Core

Changeset 12141


Ignore:
Timestamp:
11/04/2009 05:39:53 PM (16 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.