WordPress 主题开发学习资源

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

十多年前,我做了一个关于 WordPress 设计 的三部分视频系列。然后我以同样的精神制作了其他系列,例如视频直播 整个 v10 重设计朋友的网站,甚至 写了一本书。不过,这些视频现在有点过时了。如果您刚开始接触 WordPress 主题开发,观看这些视频仍然可以学习到一些东西,但有些部分会感觉非常老旧(旧的用户界面和旧版本的软件)。不过,所有代码仍然有效,因为 WordPress 在向后兼容性方面做得很好。我仍然会收到一些人告诉我,这些视频对他们很有帮助。

但随着时间的推移,最近有人问我我现在会推荐哪些资源,我想我会四处看看,看看哪些资源对我来说看起来不错。

您是否喜欢我将 WordPress 徽标放在我购买的一些素材图片上,这些图片同时包含电脑和黑板,以此来唤起“学习”的感觉?太棒了。我知道。

我们正在谈论谁?

WordPress 开发人员存在一个 *范围*,从完全不懂代码或几乎不碰代码的人,到构建自定义一切的硬核编程极客。

  1. 选择一个看起来不错的主题,然后使用它。
  2. 🤷‍♂️
  3. 🤷‍♂️
  4. 🤷‍♂️
  5. 🤷‍♂️
  6. 硬核编程极客。

我无法与该范围两端的任何人进行交流。在 *中间* 有一个完整的世界。他们可以编写代码,但他们不是计算机科学专业人员。他们是 *完成工作* 的人。也许是这样的

  1. 选择一个可用的主题,然后使用它。
  2. 从一个主题开始,使用内置工具对其进行一些自定义。
  3. 从一个主题开始,使用代码对其进行修改以实现您需要实现的功能。
  4. 从头开始,构建您需要的内容。
  5. 从头开始,构建一个高度定制的网站。
  6. 硬核编程极客。

我一直都在 #4 左右,我认为这是一个不错的甜蜜点。我尝试让现成的 WordPress 和大型流行插件承担繁重的工作,但我将自带前端(HTML、CSS 和 JavaScript)并自定义我必须自定义的内容。我正在制作模板。我正在编写查询。我正在构建模块。我正在尽可能地进行模块化。

我在这个区域感觉很强大。我几乎可以自己构建很多网站。**那么,现在有哪些资源可以帮助您学习这种类型的 WordPress 主题开发呢?**让我看看我能不能找到一些。

老方法,边做边学

实践出真知。在实践中学习。在我的生活中,我在这方面学到了很多东西。

这里的技巧是将 WordPress 安装到一个实时服务器上,然后玩弄设置、插件、自定义器,并编辑主题文件本身以使网站执行某些操作。您会在这些主题文件中找到 HTML——修改它!您会看到 PHP 代码正在输出内容。您可以判断出什么内容以及如何操作它吗?您会在主题中找到一个 CSS 文件——编辑它!

编辑 WordPress 主题并查看会发生什么

官方文档可以在一定程度上帮助您

在某种程度上,我赞成 *现场操作*(在生产网站上),因为当您是初学者时,它会让您正在做的事情产生一种 *真实感*。风险很高,让您了解自己的能力。*当我进行这些更改时,全世界任何拥有互联网连接的人都可以看到。*

在我初学的时候,我购买了一个域名和主机,将 WordPress 安装到该主机上,使用 SFTP 凭据登录,并在实时文件上进行实际操作。我使用的是 Coda,它仍然是一款流行的应用程序,并且在我撰写本文时正在积极开发新版本。

这是 Nova,来自 Panic 的一个 macOS 代码编辑器,它内置了 SFTP 功能。

希望风险是真实的,但 *较低*。例如,您正在处理一个个人项目或您的个人网站。在某些时候,在生产网站上进行修改变得太危险了。一行放错位置的 PHP 语法可能会导致整个网站崩溃。

如果您正在处理客户网站之类的东西,则需要升级您的工作流程。

现代的边做边学

构建网站的现代、健康、标准方法是

  1. 在 *本地* 操作。
  2. 使用版本控制(Git),其中新工作在 master 分支的分支中完成。
  3. 当代码推送到 master 分支时(例如,您的开发分支合并到其中),就会将代码部署到生产网站。

我最近制作了一个关于 整个工作流程 的视频,展示了我今天是如何操作的。我的工具集是

  • 使用 Local by Flywheel 在本地工作。
  • 我的网络托管也是 Flywheel,但这并不是必需的。它可以是任何提供 SFTP 访问并运行 WordPress 所需内容的东西:Apache、PHP 和 MySQL。声明:Flywheel 是此处的赞助商,因为我喜欢他们及其服务:)。
  • 代码托管在 GitHub 上的一个私有存储库中。
  • 通过 Buddy 将代码部署到 Flywheel 托管。Buddy 监视对 master 分支的推送,并将文件通过 SFTP 移动到生产站点。
Local by Flywheel

现在您有了 *本地* 设置,您可以尽情发挥了。做任何你想做的事情。您无法破坏生产网站上的任何内容,因此您可以更自由地进行实验性更改,并查看会发生什么。

在本地工作时,您可能会使用代码编辑器编辑文件。我想说,如今最流行的选择是免费的 VS Code,但也包括 AtomSublime,以及更高级的编辑器,如 PhpStorm

将代码推送到 Git 存储库后,文件修改的自由度尤其明显。完成此操作后,您可以自由地将文件 *恢复* 到上次推送的状态。

我使用 Git 软件 Tower,它允许我查看自上次提交代码以来哪些文件发生了更改。如果我犯了错误、造成了问题或做了一些我不喜欢的事情——即使我不记得自己到底更改了什么——我可以将这些更改 *丢弃* 回到它们的上一个状态。这是一定程度的自由。

当我 *提交* 代码时,无论是提交到 master 还是通过将分支合并到 master,Buddy 都会启动并将更改部署到生产站点。

CSS-Tricks 本身就是一个 WordPress 网站,它在 13 年里不断发展。

但是,从哪里开始呢?

我们这里讨论的是 WordPress 主题开发,所以您需要从一个主题开始。主题实际上是 WordPress 安装中的一系列文件文件夹。

root
  - /wp-content/
    - /themes/
       - /theme-name/

WordPress 自带了一些主题。在我写这篇文章的时候,Twenty Twenty 主题与 WordPress 一起提供,它非常不错!您可以绝对从修改它开始。

主题倾向于对它们如何组织自己以及执行操作有一些看法,Twenty Twenty 也不例外。我想说,也许是有争议的,只要代码有效并且以“WordPress”的方式执行操作,就没有 *一种正确的方法* 来组织您的主题。这只是您在制作主题时需要掌握的一种感觉。

起始主题

在我的那个时代,起始主题是开始从头开始构建主题的一种非常流行的方法。我不确定现在是否仍然如此,但主要思想是一个包含您需要的所有基本主题模板(单个博客文章页面、主页、404 页面、搜索结果页面等)的主题,但标记非常少,而且没有任何样式。这样,您就拥有了一个空白画布,可以根据自己的喜好构建所有 HTML、CSS 和 JavaScript。有点像您使用这些核心技术从头开始构建任何其他网站,只是其中包含一些 PHP 代码来输出内容。

有一个名为 Starkers 的主题很受欢迎,但现在已经停止更新了。我自己也制作了一个名为 BLANK 的主题,但很久没有碰过了。在四处查看时,我发现了一些具有相同精神的新主题。以下是我发现的三个最好的主题

我个人无法保证这些资源的绝对完美,但它们都更新过一段时间了,在我看来都是不错的起点。如果我从零开始一个项目,我会尝试一下这些资源。我可能会下载其中一个,然后根据自己的喜好进行调整,并将其保存为我自己的启动模板,以备将来再次使用。

值得一提的是,很多网页开发工作**并非**从零开始,而是基于现有的项目进行开发。在这种情况下,流程仍然需要设置本地环境;只是你并非从零开始,而是使用现有的主题。我建议复制主题并更改名称,这样即使你部署了修改后的主题,也不会影响线上主题。其他人可能会建议使用启动模板作为“父”主题,然后分支出一个“子”主题

为了使你的本地开发环境与线上网站完全同步,我认为最好的工具是WP DB Migrate Pro,它可以将线上数据库和所有媒体文件同步到你的本地站点(付费产品和付费插件,物超所值)。

更高级的启动模板

与其从零开始,不如使用一些带有合理默认设置和现代构建流程的主题作为起点。这样做的好处是,虽然完全可以使用原始的 HTML、CSS 和 JavaScript 来构建网站,但这样做缺乏足够的现代便利性,使用起来不够便捷。

以下是一些例子。

  • Morten Rand-Hendriksen 拥有一个名为 WP Rig 的项目,其中集成了各种开发工具。一个基于 Gulp 的构建流程会启动一个 BrowserSync 服务器以实现自动更新。JavaScript 代码使用 Babel 进行处理。CSS 代码使用 PostCSS 进行处理,并且代码会进行 lint 检查。他使用它教授 WordPress
  • Roots 制作了一个名为 Sage 的主题,它包含一个模板引擎、你选择的 CSS 框架以及高级构建流程功能。
  • Ignition 具有构建流程和各种辅助工具。
  • Timber 带有一个模板引擎和许多代码辅助工具。

我认为所有这些都非常酷,但也可能不适合刚入门的新手开发者。

书籍

这很难说,因为 WordPress 书籍实在太多了。在 Google 上快速搜索了一下,我发现一个网站以 9.99 美元的价格捆绑销售了 15 本 WordPress 书籍。你甚至都不知道从哪里开始。以如此低廉的价格,它们的质量能有多好?我不知道。

我和 Jeff Starr 很久以前合写了一本书,名为Digging Into WordPress。这么多年过去了,Jeff 仍然在更新这本书,所以我认为这是一个不错的选择!Jeff 还写了其他一些书籍,例如 The Tao of WordPressWordPress Themes In Depth

很多其他专门关于 WordPress 主题开发的书籍都比较旧了,大多是 2008 年到 2015 年之间的作品。当然,这些书籍中仍然有一些值得学习的内容,特别是考虑到 WordPress 的变化并不算特别快,但即便如此,我还是更倾向于阅读出版时间不超过五年的书籍。对于像 WordPress 用户和开发者这样庞大的目标群体来说,这似乎是一个巨大的机会。或者,如果已经有我找不到的优秀资源,请在评论区告诉我。

也许学习方式正在转向线上,所以人们写书的频率降低了……

线上学习课程

我们的官方学习合作伙伴 Frontend Masters 有一门关于 WordPress 的课程,重点关注JavaScript 和 WordPress,所以这可能不太适合学习主题开发的基础知识。尽管如此,它仍然非常有趣。

以下是我在查找过程中发现的其他一些不错的课程:

Zac 的课程看起来是最新的,也可能是那里最好的选择。

主题开发的另一种思路

使用 WordPress 构建网站的一种方法是完全不使用 WordPress 主题!相反,你可以使用 WordPress API 从 WordPress 中提取数据,并根据自己的喜好构建网站。

这种将 CMS 和前端构建解耦的想法非常巧妙。它通常被称为使用“无头”CMS。但这并不适合所有人。(一个主要原因是,从某种程度上来说,它会增加你的技术债务)。但它可以使 CMS 和前端都能够独立发展。