Post Thumbnails: Prevent post thumbnail previews from spilling into other images.
After [38118], when previewing a page with a secondary loop, all post thumbnails would be filtered to display the post thumbnail for the page being previewed. This ensures `_wp_preview_post_thumbnail_filter()` is only applied if the `$post_id` of the post meta being filtered is equal to the post or page being previewed. Props swisspidy, joemcgill. Fixes #37697. git-svn-id: https://develop.svn.wordpress.org/trunk@38433 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
6b23bbb92b
commit
142fefb269
@ -594,7 +594,13 @@ function _wp_preview_post_thumbnail_filter( $value, $post_id, $meta_key ) {
|
|||||||
return $value;
|
return $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( empty( $_REQUEST['_thumbnail_id'] ) || $post->ID != $post_id || '_thumbnail_id' != $meta_key || 'revision' == $post->post_type ) {
|
if ( empty( $_REQUEST['_thumbnail_id'] ) ||
|
||||||
|
empty( $_REQUEST['preview_id'] ) ||
|
||||||
|
$post->ID != $post_id ||
|
||||||
|
'_thumbnail_id' != $meta_key ||
|
||||||
|
'revision' == $post->post_type ||
|
||||||
|
$post_id != $_REQUEST['preview_id']
|
||||||
|
) {
|
||||||
return $value;
|
return $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,16 +237,41 @@ class Tests_Post_Thumbnail_Template extends WP_UnitTestCase {
|
|||||||
|
|
||||||
$GLOBALS['post'] = self::$post;
|
$GLOBALS['post'] = self::$post;
|
||||||
$_REQUEST['_thumbnail_id'] = self::$attachment_id;
|
$_REQUEST['_thumbnail_id'] = self::$attachment_id;
|
||||||
|
$_REQUEST['preview_id'] = self::$post->ID;
|
||||||
|
|
||||||
$result = _wp_preview_post_thumbnail_filter( '', self::$post->ID, '_thumbnail_id' );
|
$result = _wp_preview_post_thumbnail_filter( '', self::$post->ID, '_thumbnail_id' );
|
||||||
$this->assertEquals( self::$attachment_id, $result );
|
|
||||||
|
|
||||||
|
// Clean up.
|
||||||
|
$GLOBALS['post'] = $old_post;
|
||||||
unset( $_REQUEST['_thumbnail_id'] );
|
unset( $_REQUEST['_thumbnail_id'] );
|
||||||
if ( null === $old_post ) {
|
unset( $_REQUEST['preview_id'] );
|
||||||
unset( $GLOBALS['post'] );
|
|
||||||
} else {
|
$this->assertEquals( self::$attachment_id, $result );
|
||||||
$GLOBALS['post'] = $old_post;
|
}
|
||||||
}
|
|
||||||
|
/**
|
||||||
|
* @ticket 37697
|
||||||
|
*/
|
||||||
|
function test__wp_preview_post_thumbnail_filter_secondary_post() {
|
||||||
|
$old_post = isset( $GLOBALS['post'] ) ? $GLOBALS['post'] : null;
|
||||||
|
|
||||||
|
$secondary_post = self::factory()->post->create( array(
|
||||||
|
'post_stauts' => 'publish',
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$GLOBALS['post'] = self::$post;
|
||||||
|
$_REQUEST['_thumbnail_id'] = self::$attachment_id;
|
||||||
|
$_REQUEST['preview_id'] = $secondary_post;
|
||||||
|
|
||||||
|
$result = _wp_preview_post_thumbnail_filter( '', self::$post->ID, '_thumbnail_id' );
|
||||||
|
|
||||||
|
// Clean up.
|
||||||
|
$GLOBALS['post'] = $old_post;
|
||||||
|
unset( $_REQUEST['_thumbnail_id'] );
|
||||||
|
unset( $_REQUEST['preview_id'] );
|
||||||
|
|
||||||
|
$this->assertEmpty( $result );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user