对具有附加参数的标头挂钩使用ADD_ACTION

时间:2020-10-16 作者:Kenshinh

我使用的主题内部有一个挂钩header.php 文件将标题分为两部分,左侧和;正当我想在右侧部分添加一些内容,但我不明白在使用add_action(). 代码如下:,

do_action( \'sinatra_header_widget_location\', \'left\' );
            get_template_part( \'template-parts/header/logo\' );
            do_action( \'sinatra_header_widget_location\', \'right\' );
我怎样才能通过\'right\' 是否将参数添加到add\\u操作中?我的职能。php看起来像:

add_action(\'sinatra_header_widget_location\', \'my_custom_function\');
function my_custom_function() {
    echo \'test\';
}

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

如何将“right”参数传递到add_action?

简而言之:您不能将“left”或“right”本身传递给add_action(), 但是,您可以在回调中使用第四个参数add_action(). 请参见下面的示例。

因此,尽管您可能已经知道了这一点,钩子是(PHP)代码块中的一个特定位置,其中包含像您这样的自定义函数(my_custom_function()) 可以执行某些操作,例如显示自定义文本,或者执行一些数据库插入。

你可以通过使用add_action() 注册您的回调/函数,然后WordPress将通过do_action(). 一、 e。add_action() 注册回调以在挂钩上运行操作,而do_action() 调用运行该操作的回调。

还有不同的通话方式add_action()do_action(), 但最基本的是:

  • do_action():

    // This hook has just one parameter.
    do_action( \'hook name\', $param );
    
    // But this one has two parameters.
    do_action( \'hook name\', $param, $param2 );
    
    // And a hook can have as many parameters as necessary.
    do_action( \'hook name\', $param, $param2, $param3, ... );
    
  • add_action():

    // This means the callback will receive just one parameter,
    add_action( \'hook name\', \'function_name\' );
    // and it\'s equivalent to:
    add_action( \'hook name\', \'function_name\', 10, 1 );
    
    // And same goes with this; but the priority is 9 - the default is 10,
    add_action( \'hook name\', \'function_name\', 9 );
    // and it\'s equivalent to:
    add_action( \'hook name\', \'function_name\', 9, 1 );
    
    // And this one, it uses the default priority, but accepts 2 parameters.
    add_action( \'hook name\', \'function_name\', 10, 2 );
    
    do_action() 电话:

    do_action( \'sinatra_header_widget_location\', \'left\' );
    do_action( \'sinatra_header_widget_location\', \'right\' );
    
    .. 与第一个相同do_action() 上面的示例表示挂钩(sinatra_header_widget_location) 只有一个参数,其值为leftright.

    默认情况下,当WordPress-通过do_action() — 调用注册到挂钩的回调,它们将始终收到挂钩传递给的第一个参数do_action().

    因此,您只需要确保函数接受第一个参数。

    (以及第2、3等参数,如果有,并且您想从回调中访问它们。)

    例如,你可以给它命名$position 并执行条件检查值是否为leftright, 因为sinatra_header_widget_location hook被调用了两次-一次使用left 是第一个(也是唯一一个)参数的值,另一个是right:

    function my_custom_function( $position ) {
        if ( \'right\' === $position ) {
            echo \'yay, it\\\'s "right"\';
        }
    }
    
    因此,我希望这个修改后的答案能帮助您了解更多信息,并确保查看文档add_action()do_action() 因为你会在那里找到更多信息,包括用户提供的注释/示例,可以帮助你使用这些功能(正确的方式):