[wp-trac] [WordPress Trac] #35816: Add "after_get_posts" action to `WP_Query::get_posts()`

WordPress Trac noreply at wordpress.org
Wed Feb 17 22:57:35 UTC 2016


#35816: Add "after_get_posts" action to `WP_Query::get_posts()`
-------------------------------------+---------------------------
 Reporter:  stevegrunwell            |       Owner:  boonebgorges
     Type:  defect (bug)             |      Status:  closed
 Priority:  normal                   |   Milestone:  4.5
Component:  Query                    |     Version:  trunk
 Severity:  normal                   |  Resolution:  fixed
 Keywords:  has-patch needs-testing  |     Focuses:  performance
-------------------------------------+---------------------------
Changes (by boonebgorges):

 * owner:   => boonebgorges
 * status:  new => closed
 * resolution:   => fixed


Comment:

 In [changeset:"36566"]:
 {{{
 #!CommitTicketReference repository="" revision="36566"
 More performance improvements to metadata lazyloading.

 Comment and term meta lazyloading for `WP_Query` loops, introduced in 4.4,
 depended on filter callback methods belonging to `WP_Query` objects. This
 meant
 storing `WP_Query` objects in the `$wp_filter` global (via
 `add_filter()`),
 requiring that PHP retain the objects in memory, even when the local
 variables
 would typically be expunged during normal garbage collection. In cases
 where a
 large number of `WP_Query` objects were instantiated on a single pageload,
 and/or where the contents of the `WP_Query` objects were quite large,
 serious
 performance issues could result.

 We skirt this problem by moving metadata lazyloading out of `WP_Query`.
 The
 new `WP_Metadata_Lazyloader` class acts as a lazyload queue. Query
 instances
 register items whose metadata should be lazyloaded - such as post terms,
 or
 comments - and a `WP_Metadata_Lazyloader` method will intercept comment
 and
 term meta requests to perform the cache priming. Since
 `WP_Metadata_Lazyloader`
 instances are far smaller than `WP_Query` (containing only object IDs),
 and
 clean up after themselves far better than the previous `WP_Query` methods
 (bp
 only running their callbacks a single time for a given set of queued
 objects),
 the resource use is decreased dramatically.

 See [36525] for an earlier step in this direction.

 Props lpawlik, stevegrunwell, boonebgorges.
 Fixes #35816.
 }}}

--
Ticket URL: <https://core.trac.wordpress.org/ticket/35816#comment:12>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list