Do_action和添加_action之间的区别

时间:2013-10-28 作者:sun

这个问题可能是错的,我不确定。因为我对此不清楚。

我知道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\');

4 个回复
最合适的回答,由SO网友:fuxia 整理而成

使用do_action( \'unique_name\' ) 创建自己的操作。

你可以用它来提供API for your plugin, 所以其他插件可以为您的自定义操作注册回调。示例:Do I need to call do_action in my plugin?

但您也可以在主题中使用自定义操作(或过滤器)。示例:Best practice way to implement custom sections into a WordPress theme

您可以将两者结合起来,使插件和主题协同工作。示例:How to make method from plugin available in theme?

总结:add_action( \'foo\' ) 注册回调,do_action( \'foo\' ) 执行已注册的回调。

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 !\'; }

SO网友:user112289

您必须像下面这样使用:

function custom_register()
{
    echo \'<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>\';

}
.

add_action(\'custom\',\'custom_register\'); // Too late - do_action was already called. 
do_action(\'custom\');                    // This is called before it will have an effect

结束