如果我打电话register_post_type()
在init
动作,在某些情况下,我的插件会在火球中爆炸吗?Codex says:
register\\u post\\u type只能通过“init”操作调用。如果在“init”之前调用,它将不起作用,如果稍后调用,新创建或修改的post类型的方面将无法正常工作。
Codex also says:
请注意,必须在admin\\u菜单之前和after\\u setup\\u主题操作挂钩之后调用register\\u post\\u type()。一个好的钩子是init钩子。
根据这个建议,我一直在init
行动这对我一直都很有效,直到今天,我发现了一个问题。
我有一个插件(尚未在任何地方发布)可以记录电子邮件。我在测试时广泛使用它。它注册一个CPT,用于存储电子邮件日志。到目前为止一切都很好。今天,在测试一个简单的数字下载商店时,我注意到我在调试中记录了错误。日志,每次我插入一个新的电子邮件日志帖子。错误是由get_post_type_object()
找不到我的CPT,因为EDD在init
行动
因此,在验证doco和包括WPSE在内的大量其他引用都同意“register\\u post\\u type只能通过‘init’操作调用”之后,我继续将插件更改为register onplugins_loaded
. 请注意,此操作先于after_theme_setup
行动,所以我违反了上述两个法典摘录。
我这样做可以吗,或者在某些情况下我会遇到一些问题吗?
顺便说一句,当我转储$wp_post_types
在…上plugins_loaded
, 它已经定义了所有标准的WordPress帖子类型。。。
编辑:好吧,我很笨,EDD以前没有发过电子邮件init
, 我只需要增加钩子的优先级来击败它--现在钩子init
优先级为1。但问题依然存在。。。