[wp-trac] [WordPress Trac] #64390: get_adjacent_post() SQL changes can loop infinitely in Storefront/derivative theme code

WordPress Trac noreply at wordpress.org
Tue Dec 9 22:39:14 UTC 2025


#64390: get_adjacent_post() SQL changes can loop infinitely in
Storefront/derivative theme code
--------------------------+-----------------------------
 Reporter:  jmdodd        |      Owner:  (none)
     Type:  defect (bug)  |     Status:  new
 Priority:  normal        |  Milestone:  Awaiting Review
Component:  General       |    Version:  6.9
 Severity:  normal        |   Keywords:
  Focuses:  performance   |
--------------------------+-----------------------------
 This is mostly for informational purposes. The SQL changes in
 https://core.trac.wordpress.org/changeset/61066 caused an infinite loop in
 a number of WooCommerce themes (Storefront and its derivatives, among
 others) that were relying on the existing behavior to handle adjacent
 product links. I don't think this was a predictable outcome, but is one
 that should be considered going forward when publishing Field Guides and
 making SQL changes to core.

 The affected themes used a filter on get_{$adjacent}_post_where to advance
 the product search past the date (using < or > comparators) of a currently
 found-but-hidden adjacent product, ensuring that the search can continue
 down the chain of posts. When the SQL change was made, it became possible
 to find an invalid (hidden) post with the **same** date as the current
 global $post. Because the date was no longer a reliable barrier to
 selecting the same invalid post, each attempt to find a previous product
 substituted the same date that was already present in the query, running
 the same search while never advancing any further. When combined with
 Storefront's lack of any looping protections, this lead to an infinite
 loop on certain product pages where the next product down the line had the
 same timestamp as the current product and was a hidden product.

 Storefront has been updated in
 https://github.com/woocommerce/storefront/pull/2202, but many of the
 derivative themes may not be aware of the issue.

 To reproduce, products in the same category should have the same
 post_date, and one should have Catalog visibility: Hidden set. Visiting a
 product page adjacent to the hidden one will cause this loop.

 Related reports:
 -
 https://www.reddit.com/r/Wordpress/comments/1pd35y4/wordpress_69_is_causing_permanent_100_cpu_usage/
 - https://github.com/woocommerce/woocommerce/issues/62233

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/64390>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list