[wp-trac] [WordPress Trac] #17817: do_action/apply_filters/etc. recursion on same filter kills underlying call

WordPress Trac noreply at wordpress.org
Thu Sep 8 03:54:15 UTC 2016


#17817: do_action/apply_filters/etc. recursion on same filter kills underlying call
----------------------------------------------------+---------------------
 Reporter:  kernfel                                 |       Owner:  pento
     Type:  defect (bug)                            |      Status:  closed
 Priority:  normal                                  |   Milestone:  4.7
Component:  Plugins                                 |     Version:  2.2
 Severity:  normal                                  |  Resolution:  fixed
 Keywords:  has-patch needs-testing has-unit-tests  |     Focuses:
----------------------------------------------------+---------------------
Changes (by pento):

 * status:  reviewing => closed
 * resolution:   => fixed


Comment:

 In [changeset:"38571"]:
 {{{
 #!CommitTicketReference repository="" revision="38571"
 Hooks: Add the new class `WP_Hook`, and modify hook handling to make use
 of it.

 Filters and actions have been the basis of WordPress' plugin functionality
 since time immemorial, they've always been a reliable method for acting
 upon the current state of WordPress, and will continue to be so.

 Over the years, however, edge cases have cropped up. Particularly when it
 comes to recursively executing hooks, or a hook adding and removing
 itself, the existing implementation struggled to keep up with more complex
 use cases.

 And so, we introduce `WP_Hook`. By changing `$wp_filter` from an array of
 arrays, to an array of objects, we reduce the complexity of the hook
 handling code, as the processing code (see `::apply_filters()`) only needs
 to be aware of itself, rather than the state of all hooks. At the same
 time, we're able te handle more complex use cases, as the object can more
 easily keep track of its own state than an array ever could.

 Props jbrinley for the original architecture and design of this patch.
 Props SergeyBiryukov, cheeserolls, Denis-de-Bernardy, leewillis77,
 wonderboymusic, nacin, jorbin, DrewAPicture, ocean90, dougwollison, khag7,
 pento, noplanman and aaroncampbell for their testing, suggestions,
 contributions, patch maintenance, cajoling and patience as we got through
 this.
 Fixes #17817.
 }}}

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


More information about the wp-trac mailing list