为什么插件经常要求在模板中添加<?php do_action(‘plugin_name_hook’);?>?

时间:2017-01-28 作者:Live Seven

我已经看到许多插件安装需要添加

<?php do_action(\'plugin_name_hook\'); ?>
在模板文件中。它有什么作用?

2 个回复
SO网友:mayersdesign

好的,对不起,我明白了。我只能假设插件附带“默认帮助文本”,因为plugin\\u name\\u hook只是调用插件特定的do\\u操作的占位符文本。

SO网友:Mark Kaplun

原因是,另一种方法是api_call() 更糟糕的是,当插件被停用时,您将得到一个php错误。

你可以这样做

if (function_exists(\'api_call\'))
  echo api_call();
但它更为冗长,也不那么优雅,挂钩方式允许插件作者更改实际处理挂钩的函数的名称。

此外,当您使用某个操作时,其他代码可以删除该操作,这可能是好事,也可能是坏事,具体取决于上下文。

我个人的观点是,如果您的主题需要调用函数,只需调用它(使用if exists 保护)。这将使您的代码更具可读性。您可以在该代码块添加注释,说明此函数是插件YYY的API。

另一方面,如果编写插件,只需提交函数名并正确公开API即可。钩子应该是控制流上的一个例外/变体,而不是替代它。

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。