Avoid stomping of bulk postdata inside the bulk_edit_posts() loop.

Reverts [27990] which did not fix it for authors and comment/ping status.

props dd32, DrewAPicture.
fixes #27792.

Built from https://develop.svn.wordpress.org/trunk@28113


git-svn-id: http://core.svn.wordpress.org/trunk@27944 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Andrew Nacin 2014-04-14 07:48:14 +00:00
parent 5ab50ba7d5
commit cb4eb9c13f
1 changed files with 8 additions and 3 deletions

View File

@ -433,7 +433,12 @@ function bulk_edit_posts( $post_data = null ) {
} }
$updated = $skipped = $locked = array(); $updated = $skipped = $locked = array();
$shared_post_data = $post_data;
foreach ( $post_IDs as $post_ID ) { foreach ( $post_IDs as $post_ID ) {
// Start with fresh post data with each iteration.
$post_data = $shared_post_data;
$post_type_object = get_post_type_object( get_post_type( $post_ID ) ); $post_type_object = get_post_type_object( get_post_type( $post_ID ) );
if ( !isset( $post_type_object ) || ( isset($children) && in_array($post_ID, $children) ) || !current_user_can( 'edit_post', $post_ID ) ) { if ( !isset( $post_type_object ) || ( isset($children) && in_array($post_ID, $children) ) || !current_user_can( 'edit_post', $post_ID ) ) {
@ -482,13 +487,13 @@ function bulk_edit_posts( $post_data = null ) {
$post_data['ID'] = $post_ID; $post_data['ID'] = $post_ID;
$post_data['post_ID'] = $post_ID; $post_data['post_ID'] = $post_ID;
$translated_post_data = _wp_translate_postdata( true, $post_data ); $post_data = _wp_translate_postdata( true, $post_data );
if ( is_wp_error( $translated_post_data ) ) { if ( is_wp_error( $post_data ) ) {
$skipped[] = $post_ID; $skipped[] = $post_ID;
continue; continue;
} }
$updated[] = wp_update_post( $translated_post_data ); $updated[] = wp_update_post( $post_data );
if ( isset( $post_data['sticky'] ) && current_user_can( $ptype->cap->edit_others_posts ) ) { if ( isset( $post_data['sticky'] ) && current_user_can( $ptype->cap->edit_others_posts ) ) {
if ( 'sticky' == $post_data['sticky'] ) if ( 'sticky' == $post_data['sticky'] )