2010-03-10 122 views

回答

2

有几个原因:

  • register_activation_hook是WP2 +,ADD_ACTION可用在此之前使用
  • register_activation_hook允许开发者指定函数所在的文件(虽然这似乎很少使用)
  • 对于我来说,register_activation_hook是“清洁”

所以我敢打赌,使用ADD_ACTION日期从2版或开发者之前的插件不知道register_activation_hook的

+0

谢谢亚当。我非常感谢在这里,你几乎总能得到一个简洁明了的解释。并迅速:) – 2010-03-10 14:48:50

+0

根据@nacin(WordPress的首席开发人员),你不应该使用激活钩子(特别是在多站点上)。您应该这样做: “使用admin_init上的升级例程,并根据存储的选项处理每个站点会更好。” 来源:https://core.trac.wordpress。 org/ticket/14170#comment:68 – Sam 2017-07-20 11:10:10

+0

有趣的,谢谢@Sam。这个讨论是关于网络(即多站点)安装的具体讨论,当我写这个(我们有WPMU)时,我不认为这是一个'事情' - 我会进一步阅读,看看我是否可以更新我的答案。 – 2017-07-20 19:34:37

11

两个做不同的事情,register_activation_hook用于注册一个函数将在插件激活时(在Wordpress插件管理页面上)调用一次,而挂钩到init动作的函数将在每个请求中调用。

因此,通常的例子是使用激活函数来创建数据库表,或者为插件设置默认选项,然后使用动作函数加载翻译后的字符串。

0

将“activate_plugin”函数挂接到init看起来要么是很久以前完成的代码,要么是不了解register_activation_hook的人。第三种可能性是,尽管函数名称是他们希望它运行,无论是否调用register_activation_hook。

例如,当更新插件时,该插件被停用并重新激活,但未激活该激活挂接。 (如果插件是通过FTP或类似的方式更新的话,肯定不会被调用)。因此,如果我在激活或更新时需要运行某些代码,我可能会将其挂接到init。