你好@Grant Palin:
The register_post_type()
function is really agnostic to theme or plugin; 您可以在\'init\'
无论在哪一个地方,这都取决于你想要完成什么。
例如,如果我正在设置a custom site for a specific client 我可能会just register the post types in the theme. 另一方面,如果我想创造a reusable custom post type (“事件”可能是一个例子)那么我可能register the Event post type in an Event-specific plugin.
但是要注意,除非你的帖子类型与标准帖子相似,否则你可能仍然需要特定的主题支持。以及即将发布的Post Formats 在v3中。1、没有太多好的理由来定义在用例中与标准帖子相似的自定义帖子类型,所以您实际上有六个,六个。
而且I frequently put custom post type registrations 对于新站点in an include file called by the theme\'s functions.php
file 除非我到了a fully generic feature 在这种情况下I\'ll move to a plugin (我的大多数客户都让我编写可重用的功能,然后将其出售给他们的客户,我的大部分工作都与自定义帖子类型有关。我很少编写只在单个网站FWIW、JMMV上运行的代码。)
有一件事我要说,I would avoid using plugins that provide a UI 用于创建自定义帖子类型和自定义分类,如Custom Post Type UI 和类似的except 用于:
当你想做一些proof-of-concept prototyping 或
想什么时候都行to empower an end-user 您不想授予FTP访问权限。
为什么?因为these plugins all store their 自定义帖子类型和分类registrations in the database 这就是very difficult to version control 他们也成功了much harder to launch a new version of the site 来自现有源代码。这些UI插件实际上只有在学习、修补、探索和/或快速而肮脏地进行“假设”验证时才能最好地使用(当然,UI插件在这些用途上是非常棒的。)
此外,注册自定义帖子类型和自定义分类法的代码非常容易学习,WordPress专业人员完全没有理由开发和交付一个系统,该系统不会将其自定义帖子类型和自定义分类法硬编码到PHP代码中,无论是在主题中还是在插件中,由您选择。事实上,我将在下周从一个客户端项目中提取CPT-UI插件,并用硬编码的PHP注册替换它。
希望这有帮助(如果没有,请索取更多。)