我应该在哪里(或何时)注册新的分类法?

时间:2019-02-01 作者:Simone Bonelli

我正在写一个插件,我的问题是:

哪一点最适合放置代码来注册自定义\\u post\\u类型或分类:“init action”或“activation\\u hook”???

1) 初始化操作

add_action( \'init\', \'create_my_taxonomy\' );
function create_my_taxonomy() {
    register_taxonomy( . . .);
}
2)激活挂钩

register_activation_hook( __FILE__, \'activate_myplugin\' );
function activate_myplugin() {
    create_my_taxonomy();
    . . .
}
function create_my_taxonomy() {
    register_taxonomy( . . .);
}                                                            
备注:

文档示例为init action,但我怀疑activation\\u hook更正确

但也许这是无关紧要的

1 个回复
SO网友:Krzysiek Dróżdż

使用activation\\u挂钩不是最好的主意。原因如下(让我们看看Codex对激活挂钩的说法):

当插件被激活时,会调用action“activate\\u PLUGINNAME”挂钩。在这个钩子的名称中,PLUGINNAME被替换为插件的名称,包括可选的子目录。例如,当插件位于wp-content/plugin/sampleplugin/sample中时。php,则此挂钩的名称将变为“activate\\u sampleplugin/sample”。php’。当插件仅包含一个文件且(默认情况下)位于wp content/plugin/sample时。php此挂钩的名称为“activate\\u sample”。php’。

您可以在此处阅读有关完整流程的更多信息:https://codex.wordpress.org/Function_Reference/register_activation_hook#Process_Flow

这意味着activation hook is run only once - 当插件被激活时,因此,在每个其他请求期间,when the plugin is already active, your taxonomy won\'t get registered, 所以WordPress不会看到/理解它。

当然,当插件处于活动状态时,您可以注册分类法,以便在每个请求期间都可以使用它。

所以是的-using init action is much better idea... 和Codex is clearly suggesting that:

使用init操作调用此函数。在操作之外调用它可能会导致麻烦。看见#15568 有关详细信息。

相关推荐

Testing Plugins for Multisite

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