这个问题可能是错的,我不确定。因为我对此不清楚。
我知道add_action
它用于将我们的函数挂接到指定的函数。例如add_action(\'wp_head\'.\'myfunc\');
现在输入什么代码myfunc
将在wp_head()
. 这很清楚,但我对do_action
它是做什么的?
我认为它是用来创建我们自己的钩子,就像已经可用的钩子(wp\\u head,wp\\u footer,…等等),如果我是正确的,任何人都可以用简单的例子给我一个简单易懂的答案。
我在internet上尝试过这种差异,但都指向add\\u action和add\\u filter之间的差异。我不想去那里,因为首先我想澄清这一点,然后我会搬到那里。
有人能帮我吗?
EDIT 提问后帖子
function custom_register()
{
echo \'<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>\';
}
do_action(\'custom\');
add_action(\'custom\',\'custom_register\');
我在插件中尝试了这个,但没有收到警告消息。
但是当我用wp_head
那么它工作得很好
/******************working****************/
add_action(\'wp_head\',\'custom_register\');
SO网友:Dave Scotese
这是我的猜测,所以如果你知道得更好,请发表评论,这样我可以更新我的猜测。
您的插件代码在wp_head()
(我们可以假设它将调用添加到其中的操作)。当你add_action(\'wp_head\',\'custom_register\')
, 你告诉PHP什么时候(将来)do_action(\'wp_head\')
被调用,调用custom_register()
也你的电话也是这样add_action(\'custom\',\'custom_register\')
但正如您在代码中看到的,调用do_action(\'custom\')
已创建,调用时,尚未向其添加任何操作。这就是为什么托肖问你打电话时会发生什么do_action(\'custom\')
after 您注册了回调。您对后端和前端的回答不明确。如果您交换以下代码中的最后两行,我认为它会起作用:
function custom_register()
{
echo \'<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>\';
}
do_action(\'custom\'); // This is called before it will have an effect.
add_action(\'custom\',\'custom_register\'); // Too late - do_action was already called.
SO网友:Aamer Shahzad
do_action
: 注册anaction hook 虽然add_action
: adds a callback function 到已注册的挂钩。
Example
假设您想在模板中的提要栏之前打印一些内容。
您将添加action hook 在模板文件中index.php
通过<?php add_action(\'bp_sidebar_left\'); ?>
.现在在您的functions.php
文件,您可以向该挂钩添加回调函数以打印所需的内容
add_action(\'bp_sidebar_left\', \'bp_sidebar_left_cb\');
function bp_sidebar_left_cb() {
echo \'Hello World !\';
}