Make WordPress Core

Opened 4 years ago

Last modified 3 years ago

#14881 new defect (bug)

do_action should not pass empty string by default

Reported by: nacin Owned by:
Milestone: Future Release Priority: normal
Severity: normal Version:
Component: Plugins Keywords: has-patch 3.2-early
Focuses: Cc:

Description (last modified by nacin)

function test( $a = true ) {
   var_dump( $a );
add_action( 'test', 'test' );
add_action( 'test', 'test', 10, 0 );
do_action( 'test' );

Second example is bool(true) as expected, but the first is a zero-length string.

In this case, since do_action() is not passing any arguments, then no arguments should be passed to test() -- even if by default, one argument gets passed.

The issue here is how do_action() is defined: function do_action( $tag, $arg = '' );. There's our zero-length string. Of note, apply_filters() does not have this same issue.

The solution looks something like what I have attached. Has yet to be benchmarked.

Of note, this does not appear to have any direct implications for passing all args by default, as proposed in #14671, but I wanted to reference it anyway.

Attachments (1)

14881.diff (1.0 KB) - added by nacin 4 years ago.

Download all attachments as: .zip

Change History (7)

@nacin4 years ago

comment:1 @nacin4 years ago

  • Description modified (diff)

comment:2 @hakre4 years ago

Please take not of this ticket as well: #14789

comment:3 @hakre4 years ago

Related: #14671 - Deprecate the "accepted args" argument in add_filter() and add_action()

comment:4 @nacin4 years ago

  • Milestone changed from Awaiting Review to 3.1

comment:5 @nacin4 years ago

  • Keywords 3.2-early added
  • Milestone changed from 3.1 to Future Release
Note: See TracTickets for help on using tickets.