Make WordPress Core

Ticket #27792: 27792.2.diff

File 27792.2.diff, 2.3 KB (added by dd32, 11 years ago)

untested & reverts [27990] since it's not needed with this approach, revert is 100% optional

  • src/wp-admin/includes/post.php

     
    421421                $children = array();
    422422
    423423                for ( $i = 0; $i < 50 && $parent > 0; $i++ ) {
    424424                        $children[] = $parent;
    425425
    426426                        foreach ( $pages as $page ) {
    427427                                if ( $page->ID == $parent ) {
    428428                                        $parent = $page->post_parent;
    429429                                        break;
    430430                                }
    431431                        }
    432432                }
    433433        }
    434434
    435435        $updated = $skipped = $locked = array();
     436        $user_post_data = $post_data;
    436437        foreach ( $post_IDs as $post_ID ) {
     438                // Reset the post data on each iteration
     439                $post_data = $user_post_data;
    437440                $post_type_object = get_post_type_object( get_post_type( $post_ID ) );
    438441
    439442                if ( !isset( $post_type_object ) || ( isset($children) && in_array($post_ID, $children) ) || !current_user_can( 'edit_post', $post_ID ) ) {
    440443                        $skipped[] = $post_ID;
    441444                        continue;
    442445                }
    443446
    444447                if ( wp_check_post_lock( $post_ID ) ) {
    445448                        $locked[] = $post_ID;
    446449                        continue;
    447450                }
    448451
    449452                $post = get_post( $post_ID );
    450453                $tax_names = get_object_taxonomies( $post );
    451454                foreach ( $tax_names as $tax_name ) {
     
    470473                }
    471474
    472475                $post_data['post_type'] = $post->post_type;
    473476                $post_data['post_mime_type'] = $post->post_mime_type;
    474477                $post_data['guid'] = $post->guid;
    475478
    476479                foreach ( array( 'comment_status', 'ping_status', 'post_author' ) as $field ) {
    477480                        if ( ! isset( $post_data[ $field ] ) ) {
    478481                                $post_data[ $field ] = $post->$field;
    479482                        }
    480483                }
    481484
    482485                $post_data['ID'] = $post_ID;
    483486                $post_data['post_ID'] = $post_ID;
    484487
    485                 $translated_post_data = _wp_translate_postdata( true, $post_data );
    486                 if ( is_wp_error( $translated_post_data ) ) {
     488                $post_data = _wp_translate_postdata( true, $post_data );
     489                if ( is_wp_error( $post_data ) ) {
    487490                        $skipped[] = $post_ID;
    488491                        continue;
    489492                }
    490493
    491                 $updated[] = wp_update_post( $translated_post_data );
     494                $updated[] = wp_update_post( $post_data );
    492495
    493496                if ( isset( $post_data['sticky'] ) && current_user_can( $ptype->cap->edit_others_posts ) ) {
    494497                        if ( 'sticky' == $post_data['sticky'] )
    495498                                stick_post( $post_ID );
    496499                        else
    497500                                unstick_post( $post_ID );
    498501                }
    499502
    500503                if ( isset( $post_data['post_format'] ) )
    501504                        set_post_format( $post_ID, $post_data['post_format'] );
    502505        }
    503506
    504507        return array( 'updated' => $updated, 'skipped' => $skipped, 'locked' => $locked );
    505508}
    506509