是否将自定义帖子类型创建为插件?为什么?

时间:2013-05-11 作者:sleeper

我一直在尝试创建一个自定义的帖子类型作为插件(因为我在很多地方都看到了这一建议)。

但我有个问题not about the how, 而是the why 将CPT构建为插件。

Yes... 将CPT添加为插件确实保留了我的功能。php漂亮整洁。

But...

<假设我已启用has_archive 我还需要创造archive-cpt.php, 对吧single-cpt.php ...对吧in the theme, 对吧

  1. If I disable the plugin:still 必须删除(或隐藏或其他内容)archive-cpt.phpsingle-cpt.php 第页
  2. If I switch Themes: 我仍然需要将这两页添加到新主题中。对吧
我甚至还没有涉及到将CPT添加到默认循环的问题(以及它对基于插件的CPT的影响)。

那么,为什么是CPTplugin?

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

toscho关于在插件中定义CPT的技术原因的回答是正确的,但在我看来,你们中的许多人的问题源于对模板层次结构的误解。几乎,但不完全,您看到的每个模板文件都是可选的。

基本指数除外。php模板文件,主题开发人员可以选择是否要实现特定的模板文件。如果WordPress找不到具有匹配名称的模板文件,它会跳到层次结构中的下一个文件名。如果WordPress找不到任何匹配的模板文件,请索引。将使用php(主题的主页模板文件)。

http://codex.wordpress.org/Template_Hierarchy

WordPress将使用特定的专用文件(如果存在),但最终会返回到另一个文件index.php-- 如果没有专用文件。您的主题不必实现任何特殊的处理或补偿插件的CPT。主题可以,但不必。

假设我已启用has_archive 我还需要创造archive-cpt.php, 对吧编号。archive.php 将使用,如果失败,则index.php

另外:为了显示CPT,我需要创建一个自定义循环,所以我仍然需要创建single-cpt.php ...对吧再次,没有。同样的原因。single.php 将使用,如果不使用index.php.

需要创建这些文件in the theme, 对吧

  1. If I disable the plugin:still 必须删除(或隐藏或其他内容)archive-cpt.phpsingle-cpt.php 第页

    1. If I switch Themes: 我仍然需要将这两页添加到新主题中。对吧
    错误。模板是可选的。只有在希望为帖子类型定制显示时,才需要它们。

    当你明白主题和CPT并不像你的问题看起来那样紧密相连时,那么其他一些逻辑应该更有意义。

SO网友:fuxia

当常量SHORTINIT 设置为TRUE (自定义AJAX处理程序、导入程序或API),则不能将任何帖子添加到此类自定义帖子类型或分类中。

模板是自定义内容的视图,它们不应定义或依赖逻辑。

此外,在切换主题后,用户无法再访问和更改帖子类型的内容,因为没有注册就没有界面。

禁用插件后,无需更改主题。模板不再使用了。

更新:插件的另一个优点是能够激活它们network wide. 我是Multilingual Press, 我们还为用户提供了翻译和连接自定义帖子类型帖子的功能。但是如果他们绑定到一个主题,这就不起作用,因为每个站点的主题总是处于活动状态,而不是在整个网络中。主题帖子类型很难翻译。

另请参见:Where to put my code: plugin or functions.php?

结束

相关推荐