Commit f5c1486c99 for wordpress.org

commit f5c1486c99c10ad197c6dcd1bc0bdc6af6a18393
Author: Peter Wilson <wilson@peterwilson.cc>
Date:   Mon Oct 14 22:22:10 2024 +0000

    Media: Account for post ID queries in `update_post_thumbnail_cache()`.

    Updates `update_post_thumbnail_cache()` to account for `WP_Query` objects that only contain the post ID field rather than the entire post object.

    This changes passes the `$post` value to `get_post_thumbnail_id()` rather than assuming the presence of the ID property. Additionally, the posts to which the thumbnail is attached are now primed prior to calling the function to avoid numerous unnecessary database queries.

    The test `WP_Test_REST_Posts_Controller::test_get_items_primes_parent_post_caches()` is modified to account for an order of operations change for the priming of post meta caches. The cache is no longer primed in the final call to `update_meta_cache()` so the tests need to account for the post meta to be primed in any call to the function.

    Props antpb, jorbin, khokansardar, linsoftware, mukesh27, oglekler, rajinsharwar, sumitsingh, xendo.
    Fixes #59521.

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


    git-svn-id: http://core.svn.wordpress.org/trunk@58627 1a063a9b-81f0-0310-95a4-ce76da25c4cd

diff --git a/wp-includes/post-thumbnail-template.php b/wp-includes/post-thumbnail-template.php
index e801d53a97..7d722ae9de 100644
--- a/wp-includes/post-thumbnail-template.php
+++ b/wp-includes/post-thumbnail-template.php
@@ -112,8 +112,25 @@ function update_post_thumbnail_cache( $wp_query = null ) {

 	$thumb_ids = array();

+	/*
+	 * $wp_query may contain an array of post objects or post IDs.
+	 *
+	 * This ensures the cache is primed for all post objects to avoid
+	 * `get_post()` calls in `get_the_post_thumbnail()` triggering an
+	 * additional database call for each post.
+	 */
+	$parent_post_ids = array();
+	foreach ( $wp_query->posts as $post ) {
+		if ( $post instanceof WP_Post ) {
+			$parent_post_ids[] = $post->ID;
+		} elseif ( is_int( $post ) ) {
+			$parent_post_ids[] = $post;
+		}
+	}
+	_prime_post_caches( $parent_post_ids, false, true );
+
 	foreach ( $wp_query->posts as $post ) {
-		$id = get_post_thumbnail_id( $post->ID );
+		$id = get_post_thumbnail_id( $post );
 		if ( $id ) {
 			$thumb_ids[] = $id;
 		}
diff --git a/wp-includes/version.php b/wp-includes/version.php
index b17164629c..b2d113e860 100644
--- a/wp-includes/version.php
+++ b/wp-includes/version.php
@@ -16,7 +16,7 @@
  *
  * @global string $wp_version
  */
-$wp_version = '6.7-beta2-59234';
+$wp_version = '6.7-beta2-59235';

 /**
  * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.