WordPress.org

Make WordPress Core

Ticket #17110: 17110.diff

File 17110.diff, 2.6 KB (added by ryan, 7 years ago)

Extend to apply_filters* and do_action*

  • wp-includes/plugin.php

     
    135135        global $wp_filter, $merged_filters, $wp_current_filter;
    136136
    137137        $args = array();
    138         $wp_current_filter[] = $tag;
    139138
    140139        // Do 'all' actions first
    141140        if ( isset($wp_filter['all']) ) {
     141                $wp_current_filter[] = $tag;
    142142                $args = func_get_args();
    143143                _wp_call_all_hook($args);
    144144        }
    145145
    146146        if ( !isset($wp_filter[$tag]) ) {
    147                 array_pop($wp_current_filter);
     147                if ( isset($wp_filter['all']) )
     148                        array_pop($wp_current_filter);
    148149                return $value;
    149150        }
    150151
     152        if ( !isset($wp_filter['all']) )
     153                $wp_current_filter[] = $tag;
     154
    151155        // Sort
    152156        if ( !isset( $merged_filters[ $tag ] ) ) {
    153157                ksort($wp_filter[$tag]);
     
    193197function apply_filters_ref_array($tag, $args) {
    194198        global $wp_filter, $merged_filters, $wp_current_filter;
    195199
    196         $wp_current_filter[] = $tag;
    197 
    198200        // Do 'all' actions first
    199201        if ( isset($wp_filter['all']) ) {
     202                $wp_current_filter[] = $tag;
    200203                $all_args = func_get_args();
    201204                _wp_call_all_hook($all_args);
    202205        }
    203206
    204207        if ( !isset($wp_filter[$tag]) ) {
    205                 array_pop($wp_current_filter);
     208                if ( isset($wp_filter['all']) )
     209                        array_pop($wp_current_filter);
    206210                return $args[0];
    207211        }
    208212
     213        if ( !isset($wp_filter['all']) )
     214                $wp_current_filter[] = $tag;
     215
    209216        // Sort
    210217        if ( !isset( $merged_filters[ $tag ] ) ) {
    211218                ksort($wp_filter[$tag]);
     
    360367        else
    361368                ++$wp_actions[$tag];
    362369
    363         $wp_current_filter[] = $tag;
    364 
    365370        // Do 'all' actions first
    366371        if ( isset($wp_filter['all']) ) {
     372                $wp_current_filter[] = $tag;
    367373                $all_args = func_get_args();
    368374                _wp_call_all_hook($all_args);
    369375        }
    370376
    371377        if ( !isset($wp_filter[$tag]) ) {
    372                 array_pop($wp_current_filter);
     378                if ( isset($wp_filter['all']) )
     379                        array_pop($wp_current_filter);
    373380                return;
    374381        }
    375382
     383        if ( !isset($wp_filter['all']) )
     384                $wp_current_filter[] = $tag;
     385
    376386        $args = array();
    377387        if ( is_array($arg) && 1 == count($arg) && isset($arg[0]) && is_object($arg[0]) ) // array(&$this)
    378388                $args[] =& $arg[0];
     
    446456        else
    447457                ++$wp_actions[$tag];
    448458
    449         $wp_current_filter[] = $tag;
    450 
    451459        // Do 'all' actions first
    452460        if ( isset($wp_filter['all']) ) {
     461                $wp_current_filter[] = $tag;
    453462                $all_args = func_get_args();
    454463                _wp_call_all_hook($all_args);
    455464        }
    456465
    457466        if ( !isset($wp_filter[$tag]) ) {
    458                 array_pop($wp_current_filter);
     467                if ( isset($wp_filter['all']) )
     468                        array_pop($wp_current_filter);
    459469                return;
    460470        }
    461471
     472        if ( !isset($wp_filter['all']) )
     473                $wp_current_filter[] = $tag;
     474
    462475        // Sort
    463476        if ( !isset( $merged_filters[ $tag ] ) ) {
    464477                ksort($wp_filter[$tag]);