问题描述

我正在建立一个主题,作为我正在工作的公司的其他网站的例子。在另一个项目中,我们使用了 “混合父母主题”,并且很容易构建,但很难维护网站。

我更喜欢 Starter Theme 方法,另一位开发人员复制主题并从中创建。 Parent-> Child 给开发人员带来了太多的自由,使代码乱七八糟。例如,我不知道是否在孩子或父母身上调用了某些东西。

我想听听你的意见:

  • 父母主题更好?

  • 入门主题更好?

  • 他们每个人的利弊是什么?

谢谢。

最佳解决方案

我完全同意 Rarst 。我只想添加一些小东西。

注意:我区分父母主题和框架。在我的回答中,我认为像 TwentyEleven 这样的父主题,它主要是为特定的网站创建的,而不是框架。

入门主题:

优点

  • 易于在 HTML 级别进行自定义。我的意思是打开<div>,一个特定元素的自定义 CSS 类。为个人博客创建一个非常小的主题是一个很好的方式,您不需要父主题提供的许多东西 (或至少如果您使用父主题/框架,则必须钩住删除它们) 。您还可以回应 HTML 的特殊部分,如 iframe,引用另一个网站或只是一个’Hello text’ 比使用父主题更容易。

  • 不需要从父主题复制模板文件,只是为了改变小事情。

  • 不需要学习像钩子 Map,自定义语法,自定义函数等新的东西。这些东西是开发人员喜欢的,但不是所有的用户。

缺点

  • 因为它是一个开始,你必须做许多事情来完成你的主题:CSS,自定义模板等。如果你太懒,你可能不想这样做!

家长主题:

优点

  • 有一个完整的设计,您可以通过更改 style.css 中的小线,轻松调整,如更改颜色,字体大小等。

  • 是一个完整的主题,这意味着你可以马上就可以,而不必担心像评论模板,单页模板等等。

  • 有人为你修造了!

缺点

  • 父主题如果大多符合您的要求,应该考虑一下,所以您可以尽可能少调整。否则这是一场噩梦

  • 定制的能力不算太高。我不是指您可以在框架中看到的钩子系统 (见下面的框架) 。如果要强烈自定义它,您必须重写大多数模板文件 – 这意味着您正在重新创建主题,而不是使用父主题的目的。

框架:

优点

  • 一切都可用:框架通常作为一个 all-in-one 解决方案,因此它具有很好的创建任何类型的网站的能力。你需要自定义标志?选色器?拖曳下降?主题布局?你已经有了他们在你的手中。

  • 如果您熟悉它,可以更快地构建网站

  • 有一个完整的钩子系统,允许用户钩在很多地方来改变框架提供的许多事情

  • 高水平的定制:不仅在钩子系统中,而且像 Catalyst,Headway 这样的许多框架使您能够自定义几乎所有的元素,而不用 CSS 或钩子。

缺点

  • 用户必须学习框架 (挂钩系统,熟悉其功能,设置,甚至新术语) 才能有效地使用它。我认为这是框架的最大缺点,因为 WP 已经有很多东西需要学习,并不是所有的用户都想学习一个新的东西,只是为了更好地使用 WP 。这些东西是开发人员喜欢的,但不是所有的用户。用户只是使用,不学习和定制。

  • 冗余代码:框架的某些部分与 WP 功能重合,导致重复。示例可以是 genesis_meta()(不需要,因为我们有 wp_head) 。

  • 性能:因为框架有一切需要=> 它必须加载所有您可能根本不使用的管理员/前端所需的文件。对于这一点,我更喜欢 Hybrid Core 加载其文件 (通过使用 require_if_theme_supports 功能)

  • 默认的外观通常是最小和不好的。我们必须做很多工作,使设计完成。如果您使用的是起始主题,则使用钩子而不是起始主题中的自定义模板。

  • 框架有自己的哲学,导致不同的方式来构建框架=> 导致许多框架=> 我们不知道哪一个是最适合我们的 (特别是当它们是溢价时) 。这不是太好,因为如上所述,框架对开发人员有好处,开发人员需要深入了解代码,看看它是如何好的!如果框架是溢价的话,那个门就是看!

最后的事情:所有的起始主题&父母主题&框架可以用于任何网站,如果您可以轻松自定义以实现最终结果。所有情况都没有一个解决方案。我们必须选择哪一个可以帮助我们,也许这次起始主题是好的,但在另一个时间 – 一个框架。顺便说一句,与所有人合作可以给我们很多经验,帮助我们在许多情况下,不仅在创建主题时!

次佳解决方案

主题工作流平衡是几个因素的结合:

  • 代码量,个人到站点

  • 代码量,站点之间共享

  • 并入上游变化

这些都可以是重要的,而且每个都可能是不重要的。

父母主题模式满足所有这些相当好,但不是很好。您可以清楚地分离共享和单独的代码,以及直接的上游更新 (如果使用第三方父主题) 。当任何要求比平常更大时,它开始分手 – 很多单独的代码或许多共享代码在第三方父主题中不容易混合。

起始主题另一方面是非常专业的模特儿。它有利于个人网站,但不赞成上游更改和共享代码。一旦你创建自己的主题,所有的负担,移动代码进出它是在你身上。

更新的趋势是将框架分解为 plugin-like 组件,而不是完全运行父主题。如果你熟悉 Hybrid 作为父母主题,看看 Hybrid Core 。这种方法本质上是在父母/孩子之上的改进,上游更新更容易受到框架而不是整个主题的限制。

简而言之 (在这里有点主观):

  • 启动器适合个人网站

  • 父母/孩子适合多个网站,没有太多的自定义

  • 框架/父母/孩子可以适应任何事情和一切,但也更多地涉及开发

第三种解决方案

使用父主题的主要原因是允许更容易的更新 – 如果您只是直接使用主题并进行编辑,那么如果原始主题被更新,则必须重新应用所做的任何更改 (或将原始的更改合并回到你修改过的主题) 。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。