问题描述

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

我知道 add_action 是用来把我们的函数挂钩到指定的函数。例如 add_action('wp_head'.'myfunc'); 现在 myfunc 中的代码将在 wp_head()中执行。这很清楚,但我对 do_action 有什么疑问?

我认为它是用来创建我们自己的钩子像已经可用的钩子 (wp_head,wp_footer,.. 等) 如果我是正确的,任何人都可以用简单的例子给我一个简单易懂的答案。

我已经尝试了互联网上的差异,但都指向了 add_action 和 add_filter 之间的区别。我不想去那里,因为我想澄清一下,然后我会移动到那里。

有谁能够帮助我?

问题 POST 后编辑

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');

最佳解决方案

使用 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' )执行注册的回调。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。