WordPress.org

Make WordPress Core

Ticket #17110: 17110.diff

File 17110.diff, 2.6 KB (added by ryan, 4 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]);