我使用的主题内部有一个挂钩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\';
}
最合适的回答,由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
) 只有一个参数,其值为left
或right
.默认情况下,当WordPress-通过do_action()
— 调用注册到挂钩的回调,它们将始终收到挂钩传递给的第一个参数do_action()
.
因此,您只需要确保函数接受第一个参数。
(以及第2、3等参数,如果有,并且您想从回调中访问它们。)
例如,你可以给它命名$position
并执行条件检查值是否为left
或right
, 因为sinatra_header_widget_location
hook被调用了两次-一次使用left
是第一个(也是唯一一个)参数的值,另一个是right
:
function my_custom_function( $position ) {
if ( \'right\' === $position ) {
echo \'yay, it\\\'s "right"\';
}
}
因此,我希望这个修改后的答案能帮助您了解更多信息,并确保查看文档add_action()
和do_action()
因为你会在那里找到更多信息,包括用户提供的注释/示例,可以帮助你使用这些功能(正确的方式):