第 4 章 主题
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
WordPress 主题驱动着网络应用的前端。 在第1章中,我们打了个比方,WordPress主题就像是传统MVC框架中的视图。这个比喻并不完美,但主题和视图的相似之处在于,它们都控制着应用程序的外观,也是设计人员花费最多时间的地方。
由 WordPress 社区编写的《主题开发者手册》是学习如何以基于标准的方式为 WordPress 构建主题的权威资源。所有主题开发人员都应使用该资源。本章涵盖的主题开发领域对应用程序开发人员尤为重要。
主题与插件
在某种程度上,主题和插件中的所有源文件都只是 WordPress 在不同时间加载的.php文件。 理论上,您的整个应用程序代码都可以放在一个主题或一个插件中。在实践中,您会希望将与网站前端(视图)相关的代码保留在主题中,而将应用程序后台(模型和控制器)的代码保留在插件中。
您决定在哪里放置一些代码将取决于您是主要构建一个完整的应用程序,还是构建一个单独的插件或主题。
开发应用程序时在何处放置代码
如果您要构建一个完整的网络应用程序,基本上就是安装一个 WordPress,那么您就可以完全访问网站以及安装的主题和插件。 您的代码可以 Go 到任何地方。即便如此,在决定将某一特定功能作为应用程序插件或主题的一个模块,还是作为一个单独的插件时,您仍应遵循一定的思考过程。在这一步做好计划的主要受益者将是您的开发人员(也许只是您自己)。正确地组织您的代码将使您更容易维护您的应用程序并进一步开发它。
在构建应用程序时,我们尽量使用以下指导原则:
-
使用一个主插件来存储核心应用程序代码,使用一个主题来管理前端代码。
-
任何对其他项目有用或可能被其他插件取代的模块化功能都应作为单独的插件进行编码。
-
永远不要入侵核心!1
那么,什么是核心应用程序代码,什么是前端代码呢?同样,我们的伪 MVC 框架看起来是这样的:
- 插件 = 模型
-
所有定义数据结构、业务逻辑和 Ajax 服务的代码都应放在核心插件中。诸如 CPT 和分类标准的定义、表单处理以及
Post和User类的类封装器也应放在核心插件中。 - 主题 = 观点
-
所有模板代码和前端逻辑都应放在主题中。网站框架、页眉、页脚、菜单和边栏都应在主题中编码。像
if(is_user_logged_in()) { //show menu } else { //show login }这样的简单逻辑应该放在主题中。
在决定功能编码位置时,需要考虑的一点是你的开发团队。如果你有一个设计师和一个程序员,你应该把设计师关注的东西放在主题中,而把程序员关注的东西放在核心插件中。即使你需要花点小心思,明确区分这样的事情也会让你的开发人员更容易找到他们想要的东西。
开发插件时
如果您要构建一个可用于其他网站的插件或可跨项目使用的模块化功能,那么将代码保留在一个插件中是非常合理的。 在这种情况下,您可以在插件中存储模板文件来处理用户界面组件。通常的做法是允许这些文件被活动的 WordPress 主题覆盖,本章稍后将介绍这一点。
开发主题时在何处放置代码
同样,如果您开发的主题将被分发,并且依赖于 CPT 或其他定制功能,而这些功能通常会被编码到插件中, ,那么将其包含在您的主题中可能会更合理。如果用户必须先激活插件才能使用主题,那么不妨将插件代码移到主题中。如果您的主题对 WordPress 进行了较大的底层修改,可以考虑将类似插件的代码放到父主题中,而将与设计相关的代码放到子主题中。这样,如果你的用户想改变网站的设计,而又不想失去主题提供的其他功能,他们就可以更容易地做到这一点。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access