<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[55671] trunk: Taxonomy: Always lazily load term meta.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/55671">55671</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/55671","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>spacedmonkey</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2023-04-21 09:22:04 +0000 (Fri, 21 Apr 2023)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Taxonomy: Always lazily load term meta. 

In <a href="https://core.trac.wordpress.org/changeset/34529">[34529]</a> introduced lazy loading of term meta. However, this was only in the context of `WP_Query`. Other parts of the codebase, like `WP_Term_Query` did not lazily load term meta. In this change, calls to `update_termmeta_cache` are now replaced with `wp_lazyload_term_meta`, that instead of priming term meta caches, just adds them to the queue to be primed it ever called. This results in far less database queries, as there a number of places where term meta is being primed unnecessarily and never used. Adding everything to the term meta queue, also means that if term meta is used, that is all loaded in a single database / cache call.

Props spacedmonkey, mukesh27, peterwilsoncc. 
Fixes <a href="https://core.trac.wordpress.org/ticket/57645">#57645</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpincludesclasswptermqueryphp">trunk/src/wp-includes/class-wp-term-query.php</a></li>
<li><a href="#trunksrcwpincludespostphp">trunk/src/wp-includes/post.php</a></li>
<li><a href="#trunksrcwpincludestaxonomyphp">trunk/src/wp-includes/taxonomy.php</a></li>
<li><a href="#trunktestsphpunitincludesabstracttestcasephp">trunk/tests/phpunit/includes/abstract-testcase.php</a></li>
<li><a href="#trunktestsphpunittestspostnavmenuphp">trunk/tests/phpunit/tests/post/nav-menu.php</a></li>
<li><a href="#trunktestsphpunittestsquerylazyLoadTermMetaphp">trunk/tests/phpunit/tests/query/lazyLoadTermMeta.php</a></li>
<li><a href="#trunktestsphpunitteststermgetTermsphp">trunk/tests/phpunit/tests/term/getTerms.php</a></li>
<li><a href="#trunktestsphpunitteststermmetaphp">trunk/tests/phpunit/tests/term/meta.php</a></li>
<li><a href="#trunktestsphpunitteststermqueryphp">trunk/tests/phpunit/tests/term/query.php</a></li>
<li><a href="#trunktestsphpunitteststermwpGetObjectTermsphp">trunk/tests/phpunit/tests/term/wpGetObjectTerms.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpincludesclasswptermqueryphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/class-wp-term-query.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/class-wp-term-query.php     2023-04-21 03:17:29 UTC (rev 55670)
+++ trunk/src/wp-includes/class-wp-term-query.php       2023-04-21 09:22:04 UTC (rev 55671)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -865,7 +865,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Prime termmeta cache.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $args['update_term_meta_cache'] ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $term_ids = wp_list_pluck( $term_objects, 'term_id' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        update_termmeta_cache( $term_ids );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 wp_lazyload_term_meta( $term_ids );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( 'all_with_object_id' === $_fields && ! empty( $args['object_ids'] ) ) {
</span></span></pre></div>
<a id="trunksrcwpincludespostphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/post.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/post.php    2023-04-21 03:17:29 UTC (rev 55670)
+++ trunk/src/wp-includes/post.php      2023-04-21 09:22:04 UTC (rev 55671)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7692,10 +7692,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( $term_ids ) {
-               $lazyloader = wp_metadata_lazyloader();
-               $lazyloader->queue_objects( 'term', $term_ids );
-       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ wp_lazyload_term_meta( $term_ids );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span></span></pre></div>
<a id="trunksrcwpincludestaxonomyphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/taxonomy.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/taxonomy.php        2023-04-21 03:17:29 UTC (rev 55670)
+++ trunk/src/wp-includes/taxonomy.php  2023-04-21 09:22:04 UTC (rev 55671)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1426,7 +1426,23 @@
</span><span class="cx" style="display: block; padding: 0 10px">        return update_meta_cache( 'term', $term_ids );
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Queue term meta for lazy-loading.
+ *
+ * @since 6.3.0
+ *
+ * @param array $term_ids List of term IDs.
+ */
+function wp_lazyload_term_meta( array $term_ids ) {
+       if ( empty( $term_ids ) ) {
+               return;
+       }
+       $lazyloader = wp_metadata_lazyloader();
+       $lazyloader->queue_objects( 'term', $term_ids );
+}
+
+/**
</ins><span class="cx" style="display: block; padding: 0 10px">  * Gets all meta data, including meta IDs, for the given term ID.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 4.9.0
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4003,6 +4019,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 4.6.0
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 6.1.0 This function is no longer marked as "private".
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @since 6.3.0 Use wp_lazyload_term_meta() for lazy-loading of term meta.
</ins><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @global wpdb $wpdb WordPress database abstraction object.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4017,10 +4034,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $fresh_terms = $wpdb->get_results( sprintf( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE t.term_id IN (%s)", implode( ',', array_map( 'intval', $non_cached_ids ) ) ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                update_term_cache( $fresh_terms );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $update_meta_cache ) {
-                       update_termmeta_cache( $non_cached_ids );
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if ( $update_meta_cache ) {
+               wp_lazyload_term_meta( $term_ids );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="trunktestsphpunitincludesabstracttestcasephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/includes/abstract-testcase.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/includes/abstract-testcase.php        2023-04-21 03:17:29 UTC (rev 55670)
+++ trunk/tests/phpunit/includes/abstract-testcase.php  2023-04-21 09:22:04 UTC (rev 55671)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -195,9 +195,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->_restore_hooks();
</span><span class="cx" style="display: block; padding: 0 10px">                wp_set_current_user( 0 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $lazyloader = wp_metadata_lazyloader();
-               $lazyloader->reset_queue( 'term' );
-               $lazyloader->reset_queue( 'comment' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->reset_lazyload_queue();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -277,6 +275,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * Reset the lazy load meta queue.
+        */
+       protected function reset_lazyload_queue() {
+               $lazyloader = wp_metadata_lazyloader();
+               $lazyloader->reset_queue( 'term' );
+               $lazyloader->reset_queue( 'comment' );
+       }
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * Unregisters existing post types and register defaults.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * Run before each test in order to clean up the global scope, in case
</span></span></pre></div>
<a id="trunktestsphpunittestspostnavmenuphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/post/nav-menu.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/post/nav-menu.php       2023-04-21 03:17:29 UTC (rev 55670)
+++ trunk/tests/phpunit/tests/post/nav-menu.php 2023-04-21 09:22:04 UTC (rev 55671)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -304,6 +304,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'update_term_metadata_cache', array( $action, 'filter' ), 10, 2 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                update_menu_item_cache( $query_result );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                get_term_meta( $term_id );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $args = $action->get_args();
</span><span class="cx" style="display: block; padding: 0 10px">                $last = end( $args );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -383,12 +384,14 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $start_num_queries = get_num_queries();
</span><span class="cx" style="display: block; padding: 0 10px">                wp_get_nav_menu_items( $this->menu_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                get_term_meta( $term_ids[0] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $queries_made = get_num_queries() - $start_num_queries;
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertSame( 6, $queries_made, 'Only does 6 database queries when running wp_get_nav_menu_items.' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $args = $action_terms->get_args();
-               $last = end( $args );
-               $this->assertSameSets( $term_ids, $last[1], '_prime_term_caches() was not executed.' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $args       = $action_terms->get_args();
+               $first      = reset( $args );
+               $term_ids[] = $this->menu_id;
+               $this->assertSameSets( $term_ids, $first[1], '_prime_term_caches() was not executed.' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $args = $action_posts->get_args();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertSameSets( $menu_nav_ids, $args[0][1], '_prime_post_caches() was not executed.' );
</span></span></pre></div>
<a id="trunktestsphpunittestsquerylazyLoadTermMetaphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/query/lazyLoadTermMeta.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/query/lazyLoadTermMeta.php      2023-04-21 03:17:29 UTC (rev 55670)
+++ trunk/tests/phpunit/tests/query/lazyLoadTermMeta.php        2023-04-21 09:22:04 UTC (rev 55671)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -45,6 +45,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @covers ::wp_queue_posts_for_term_meta_lazyload
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_wp_queue_posts_for_term_meta_lazyload() {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $this->reset_lazyload_queue();
</ins><span class="cx" style="display: block; padding: 0 10px">                 $filter = new MockAction();
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'update_term_metadata_cache', array( $filter, 'filter' ), 10, 2 );
</span><span class="cx" style="display: block; padding: 0 10px">                new WP_Query(
</span></span></pre></div>
<a id="trunktestsphpunitteststermgetTermsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/term/getTerms.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/term/getTerms.php       2023-04-21 03:17:29 UTC (rev 55670)
+++ trunk/tests/phpunit/tests/term/getTerms.php 2023-04-21 09:22:04 UTC (rev 55671)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2756,7 +2756,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * @ticket 10142
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function test_termmeta_cache_should_be_primed_by_default() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function test_termmeta_cache_should_be_lazy_loaded_by_default() {
</ins><span class="cx" style="display: block; padding: 0 10px">                 global $wpdb;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                register_taxonomy( 'wptests_tax', 'post' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2779,7 +2779,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->assertSame( 'bar', get_term_meta( $t, 'foo', true ) );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertSame( $num_queries, $wpdb->num_queries );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertSame( $num_queries + 1, $wpdb->num_queries );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span></span></pre></div>
<a id="trunktestsphpunitteststermmetaphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/term/meta.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/term/meta.php   2023-04-21 03:17:29 UTC (rev 55670)
+++ trunk/tests/phpunit/tests/term/meta.php     2023-04-21 09:22:04 UTC (rev 55671)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -116,9 +116,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function test_term_meta_should_be_lazy_loaded_for_all_terms_in_wp_query_loop() {
</span><span class="cx" style="display: block; padding: 0 10px">                global $wpdb;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Clear any previous term IDs from the queue.
-               wp_metadata_lazyloader()->reset_queue( 'term' );
-
</del><span class="cx" style="display: block; padding: 0 10px">                 $p = self::factory()->post->create( array( 'post_status' => 'publish' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                register_taxonomy( 'wptests_tax', 'post' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -199,7 +196,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $terms as $t ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        add_term_meta( $t, 'foo', 'bar' );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->reset_lazyload_queue();
</ins><span class="cx" style="display: block; padding: 0 10px">                 $q = new WP_Query(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'cache_results'          => true,
</span></span></pre></div>
<a id="trunktestsphpunitteststermqueryphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/term/query.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/term/query.php  2023-04-21 03:17:29 UTC (rev 55670)
+++ trunk/tests/phpunit/tests/term/query.php    2023-04-21 09:22:04 UTC (rev 55671)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -46,6 +46,46 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertSameSets( array( $term_2 ), $q->terms );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        /**
+        * @ticket 57645
+        */
+       public function test_lazy_load_term_meta() {
+               $filter = new MockAction();
+               add_filter( 'update_term_metadata_cache', array( $filter, 'filter' ), 10, 2 );
+               register_taxonomy( 'wptests_tax_1', 'post' );
+               register_taxonomy( 'wptests_tax_2', 'post' );
+
+               $term_1 = self::factory()->term->create( array( 'taxonomy' => 'wptests_tax_1' ) );
+               $term_2 = self::factory()->term->create( array( 'taxonomy' => 'wptests_tax_2' ) );
+
+               $q = new WP_Term_Query(
+                       array(
+                               'taxonomy'   => 'wptests_tax_1',
+                               'fields'     => 'ids',
+                               'hide_empty' => false,
+                       )
+               );
+
+               $this->assertSameSets( array( $term_1 ), $q->terms );
+
+               $q = new WP_Term_Query(
+                       array(
+                               'taxonomy'   => 'wptests_tax_2',
+                               'fields'     => 'ids',
+                               'hide_empty' => false,
+                       )
+               );
+
+               $this->assertSameSets( array( $term_2 ), $q->terms );
+
+               get_term_meta( $term_1 );
+
+               $args     = $filter->get_args();
+               $first    = reset( $args );
+               $term_ids = end( $first );
+               $this->assertSameSets( $term_ids, array( $term_1, $term_2 ) );
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         public function test_taxonomy_should_accept_taxonomy_array() {
</span><span class="cx" style="display: block; padding: 0 10px">                register_taxonomy( 'wptests_tax_1', 'post' );
</span><span class="cx" style="display: block; padding: 0 10px">                register_taxonomy( 'wptests_tax_2', 'post' );
</span></span></pre></div>
<a id="trunktestsphpunitteststermwpGetObjectTermsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/term/wpGetObjectTerms.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/term/wpGetObjectTerms.php       2023-04-21 03:17:29 UTC (rev 55670)
+++ trunk/tests/phpunit/tests/term/wpGetObjectTerms.php 2023-04-21 09:22:04 UTC (rev 55671)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -615,7 +615,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * @ticket 10142
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function test_termmeta_cache_should_be_primed_by_default() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function test_termmeta_cache_should_be_lazy_loaded_by_default() {
</ins><span class="cx" style="display: block; padding: 0 10px">                 global $wpdb;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                register_taxonomy( 'wptests_tax', 'post' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -635,7 +635,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->assertSame( 'bar', get_term_meta( $t, 'foo', true ) );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertSame( $num_queries, $wpdb->num_queries );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertSame( $num_queries + 1, $wpdb->num_queries );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -700,7 +700,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->assertSame( 'bar', get_term_meta( $t, 'foo', true ) );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertSame( $num_queries, $wpdb->num_queries );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertSame( $num_queries + 1, $wpdb->num_queries );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -733,7 +733,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->assertSame( 'bar', get_term_meta( $t, 'foo', true ) );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->assertSame( $num_queries, $wpdb->num_queries );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->assertSame( $num_queries + 1, $wpdb->num_queries );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span></span></pre>
</div>
</div>

</body>
</html>