[wp-trac] [WordPress Trac] #46991: Stop propagation on actions or filter

WordPress Trac noreply at wordpress.org
Mon Apr 22 08:59:10 UTC 2019


#46991: Stop propagation on actions or filter
-------------------------------------------+------------------------------
 Reporter:  screamingdev                   |       Owner:  (none)
     Type:  feature request                |      Status:  new
 Priority:  low                            |   Milestone:  Awaiting Review
Component:  Plugins                        |     Version:
 Severity:  normal                         |  Resolution:
 Keywords:  reporter-feedback 2nd-opinion  |     Focuses:
-------------------------------------------+------------------------------

Comment (by screamingdev):

 Surely I can make up some use cases either small and big or simple and
 important. So I just point out that this leads to a better event-based-
 system (as possibly known from other languages or frameworks) and give an
 example for action and filter. I am sure there is a need among developers
 to stop WordPress or other plugins/themes from doing things. Currently
 noone has granular control over the things that happen in the event queue
 / hooks and deregister all remainder or the whole action/filter is no
 proper solution.


 **Action:**

 {{{#!php
 <?php
 add_filter( 'wp_footer' , function () {
   if ( is_sales_page( 'footer' ) ) {
     echo get_page( 'footer-salespage' );
     // stopPropagation
   }
 } );
 }}}

 Yee this can be done in the template too and I just made up functions.


 **Filter:**

 {{{#!php
 <?php
 add_filter( 'register' , function () {
   // stopPropagation
 } );
 }}}

 We simply disable something.

 ----

 On the one hand this solves all the scenarios where customers needs
 changes for their own site. So if WordPress wants to become or name itself
 kind of "framework" with event sourcing then it truly should be capable of
 stopping events.
 On the other hand this blocks out plugins and theme-functionality which is
 fine because someone truly intended to.

 This can be solved in multiple ways:

 * add stopPropagation (and keep it in WordPress)
 * Allow a dropin for WP_Hook
 * Do not make WP_Hook a final class

 What else do you like to discuss?

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


More information about the wp-trac mailing list