Don't iterate over $wp_query->posts in update_post_thumbnail_cache() if it is empty. Adds unit tests.

Props SergeyBiryukov, for the original patch.
Fixes #26321.
 


git-svn-id: https://develop.svn.wordpress.org/trunk@27166 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Scott Taylor 2014-02-12 04:48:14 +00:00
parent 94a1bb0485
commit fd8d6cddcd
2 changed files with 32 additions and 2 deletions

View File

@ -57,7 +57,7 @@ function update_post_thumbnail_cache( $wp_query = null ) {
if ( ! $wp_query )
$wp_query = $GLOBALS['wp_query'];
if ( $wp_query->thumbnails_cached )
if ( $wp_query->thumbnails_cached || ! $wp_query->posts )
return;
$thumb_ids = array();
@ -69,7 +69,7 @@ function update_post_thumbnail_cache( $wp_query = null ) {
if ( ! empty ( $thumb_ids ) ) {
_prime_post_caches( $thumb_ids, false, true );
}
$wp_query->thumbnails_cached = true;
}

View File

@ -0,0 +1,30 @@
<?php
/**
* @group post
* @group thumbnails
*/
class Tests_Post_Thumbnails extends WP_UnitTestCase {
/**
* @ticket 26321
*/
function test_update_post_thumbnail_cache() {
update_post_thumbnail_cache();
$this->assertFalse( $GLOBALS['wp_query']->thumbnails_cached );
$this->factory->post->create_many( 3 );
$GLOBALS['wp_query'] = new WP_Query( array( 'post_type' => 'post' ) );
update_post_thumbnail_cache();
$this->assertTrue( $GLOBALS['wp_query']->thumbnails_cached );
$q = new WP_Query();
update_post_thumbnail_cache( $q );
$this->assertFalse( $q->thumbnails_cached );
$p = new WP_Query( array( 'post_type' => 'post' ) );
update_post_thumbnail_cache( $p );
$this->assertTrue( $p->thumbnails_cached );
}
}