diff --git a/src/wp-includes/plugin.php b/src/wp-includes/plugin.php index 3e021bbdd8..1f6cacd5b4 100644 --- a/src/wp-includes/plugin.php +++ b/src/wp-includes/plugin.php @@ -448,10 +448,11 @@ function do_action( $tag, $arg = '' ) { ++$wp_actions[ $tag ]; } + $all_args = func_get_args(); + // Do 'all' actions first if ( isset( $wp_filter['all'] ) ) { $wp_current_filter[] = $tag; - $all_args = func_get_args(); _wp_call_all_hook( $all_args ); } @@ -466,14 +467,11 @@ function do_action( $tag, $arg = '' ) { $wp_current_filter[] = $tag; } - $args = array(); - if ( is_array( $arg ) && 1 == count( $arg ) && isset( $arg[0] ) && is_object( $arg[0] ) ) { // array(&$this) - $args[] =& $arg[0]; - } else { - $args[] = $arg; - } - for ( $a = 2, $num = func_num_args(); $a < $num; $a++ ) { - $args[] = func_get_arg( $a ); + $args = $all_args; + array_shift( $args ); + + if ( empty( $args ) ) { + $args = array( '' ); } $wp_filter[ $tag ]->do_action( $args );