我正在尝试确定为什么某些WordPress插件使用register_activation_hook(__FILE__, 'activate_plugin')
,而其他人则使用add_action('init', 'activate_plugin');
答案 0 :(得分:14)
两者做了不同的事情,register_activation_hook
用于注册一个函数,该函数在插件被激活时被调用一次(在Wordpress插件管理页面上),而函数被挂钩到{{每次请求都会调用1}}动作。
因此,常见的例子是使用激活函数来创建数据库表,或者为插件设置默认选项,然后使用init
动作函数来加载已翻译的字符串。
答案 1 :(得分:2)
有几个原因:
所以我敢打赌,使用版本2之前的add_action日期的插件或开发人员不知道register_activation_hook
答案 2 :(得分:0)
将“activate_plugin”函数挂钩到init看起来要么是很久以前完成的代码,要么是不知道register_activation_hook的人。第三种可能性是,无论函数名称如何,无论是否调用register_activation_hook,它们都希望它运行。
例如,当更新插件时,插件将被停用并重新激活,但不会调用activate挂钩。 (如果插件是通过FTP或类似的方式更新的话,肯定不会调用它。)因此,如果我输入一些需要在激活或更新后运行的代码,我可能会将它挂钩到init。 / p>