[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