WordPress.org

Make WordPress Core

Opened 14 months ago

Last modified 12 months ago

#49678 new defect (bug)

do_action default first parameter

Reported by: Tkama Owned by:
Milestone: Awaiting Review Priority: normal
Severity: normal Version: 5.3.2
Component: Plugins Keywords: dev-feedback
Focuses: Cc:

Description

This code looks like bug: we don't pass any parameters to action but the first parameter is passed anyway and have the value (empty string). Why?

<?php
add_action( 'action_name', function( $first ){
        var_dump( $first );
} );

do_action( 'action_name' ); //> string(0) ""

Change History (3)

#1 @SergeyBiryukov
14 months ago

  • Component changed from General to Plugins

#2 @donmhico
13 months ago

  • Keywords dev-feedback added

Hi @Tkama,

Navigating the codebase, seems like this line is responsible - https://core.trac.wordpress.org/browser/trunk/src/wp-includes/plugin.php#L472

While it's just easy to remove the if clause, i'm not sure if it won't introduce any compatibility issues.

#3 @Tkama
12 months ago

@donmhico thanks. There is no difficulties to find the reason and fix it for me. The idea of this ticket: maybe it's better to fix core code for more predictable behavior of such code.

For example:

<?php
add_action( 'action_name', function( $first = 'foo' ){
     // some logic

     echo $first
} );

do_action( 'action_name' );

As we can see. We don't pass any params to

do_action( 'action_name' );

and we expect the code print foo but not ''.

Such hook-call logic we can use, for example, for plugins when we want wrap some plugin function, for save plugin deactivation when plugin function is used inside the theme template files.

Note: See TracTickets for help on using tickets.