WordPress 主题更新完全指南:从 ZIP 到 SVN

对于刚刚接触 WordPress 主题开发的初学者来说,主题更新往往是一个令人困惑的环节。你辛辛苦苦写好了主题代码,通过审核上架到官方目录,但后续如何推送新版本?官方提供了两种方式:ZIP 上传和 SVN 命令行。ZIP 方式适合审核中的主题,操作简单直观;而 SVN 则是主题进入官方仓库后的标准手段,虽然看起来有点“老派”,但掌握后反而更。需要注意的是,SVN 和 Git 完全是两码事——SVN 是中心化的版本控制系统,而 Git 是分布式的。在 WordPress 主题开发场景中,SVN 被用作发布工具而非开发工具,这意味着每次提交都应该是“终版本”,一旦推送就无法撤回。这篇文章会带你理清这两种更新方式的适用场景和操作步骤,避开那些新手容易踩的坑。


一、两种更新方式:选哪个?

WordPress 官方主题仓库为开发者提供了两种主题更新方式,具体用哪一种,取决于你的主题当前处于什么阶段。

1. ZIP 上传(审核队列中的主题)

如果你的主题已经提交审核,但还在排队等待 WordPress 官方团队的人工审查,这时候你想修改一些代码或修复 bug,只能通过上传 ZIP 包的方式更新。

操作上和你初次提交主题时完全一样:在主题开发者后台,找到你的主题,上传新的 ZIP 文件即可。

关键点: 上传前,务必更新 style.css 文件头部的 Version 字段。版本号必须比之前的高,比如从 1.0.0 改为 1.0.1。更新版本号不会重置你的排队位置,不用担心因为更新而排到队尾。

2. SVN 提交(已上架的主题)

一旦你的主题通过审核,正式出现在 WordPress 官方主题目录中,ZIP 上传的入口就会关闭。此后所有更新都必须通过 SVN(Subversion)来完成。

SVN 是 WordPress 官方仓库长期使用的版本控制系统。虽然它不像 Git 那么流行,但在这里它就是“标准”。


二、SVN 是什么?为什么用它?

SVN 的全称是 Subversion,一个中心化的版本控制系统。和 Git 的分布式不同,SVN 所有的版本历史都存放在中央服务器上,你的本地操作终都要“提交”回服务器才算数。

在 WordPress 主题仓库的场景下,SVN 被严格定义为发布工具,而不是开发工具。这意味着:

  • 你的每一次提交都对应一个公开发布的版本
  • 提交后无法修改或撤销
  • 如果发现错误,的办法是创建一个更新的版本号目录,重新提交

这个限制很多人一开始不习惯,但理解背后的逻辑就顺了:官方仓库的每个版本都应该是稳定的、可发布的,不能频繁改动。


三、准备工作:安装 SVN 客户端

在 Mac 上,系统通常自带了 SVN。打开终端,输入以下命令验证:

bash

svn --version

如果显示版本号,说明已安装。如果没有,可以通过 Homebrew 安装:

bash

brew install svn

Windows 用户推荐使用 TortoiseSVN(免费)或 SmartSVN(付费,跨平台)。SmartSVN 支持 Windows、Linux 和 macOS。

对于 Mac 用户,命令行操作更灵活,尤其方便批量删除 .DS_Store 和 __MACOSX 这类 macOS 自动生成的隐藏文件——这些文件如果被提交,会导致主题检查报错。


四、SVN 更新主题的完整步骤

假设你的主题名叫 hello-world,当前版本是 1.0.1,现在要发布 1.0.2。

一步:从官方仓库拉取代码到本地

在终端中执行:

bash

svn co https://themes.svn.wordpress.org/hello-world/

co 是 checkout 的缩写,意思是将远程仓库完整复制到当前目录下的 hello-world 文件夹中。

注意目录命名规则: 主题目录名必须和官方仓库中的名称完全一致,包括大小写和连字符。如果不确定,可以访问 https://themes.svn.wordpress.org/你的主题名/ 来确认。

二步:基于当前版本创建新版本目录

进入主题目录后,执行:

bash

cd hello-world
svn cp 1.0.1 1.0.2

svn cp 是复制命令,它会创建一个名为 1.0.2 的新目录,内容完全来自 1.0.1。同时,SVN 会自动记录这个复制操作的历史关联,方便后续追踪。

版本号命名规范: 必须遵循标准的语义化版本规范,且新版本号必须高于当前版本。例如 1.2.3 → 1.2.4,不能跳号或降级。

三步:修改主题文件

现在 1.0.2 目录就是你新版本的“工作区”。在该目录内修改代码、新增功能或修复 bug。

有两个文件的修改是强制要求的:

  1. style.css:更新文件头部的 Version 字段为 1.0.2
  2. readme.txt:在 == Changelog == 章节中添加本次更新的记录

四步:清理 macOS 隐藏文件

Mac 用户执行:

bash

find . -name ".DS_Store" -print -delete
rm -R __MACOSX

这两条命令分别删除所有 .DS_Store 文件和 __MACOSX 文件夹。这些是 macOS 的资源文件,对主题本身没有用处,但如果不删除,提交后主题检查器会报错,导致审核不通过。

五步:提交到仓库

bash

svn commit -m "更新说明,例如:修复 readme.txt 中的拼写错误"

提交后,你会收到一封来自 WordPress.org 的确认邮件。新版本在官方目录中生效可能需要一些时间,请耐心等待。


五、常见问题与注意事项

提交后能修改吗?
不能。SVN 提交是“一锤子买卖”。如果发现错误,无论是代码 bug 还是拼写错误,都只能从头再来:创建更新的版本号目录(如 1.0.3),复制 1.0.2 的内容,修正后重新提交。

ZIP 上传和 SVN 的切换时机?
主题审核通过、上架到官方目录后,后台的 ZIP 上传入口会自动消失,转为要求使用 SVN。所以如果你看到后台只有 SVN 选项,说明主题已经正式发布了。

版本号写错了怎么办?
同样的处理方式——创建一个新版本目录,修正版本号,重新提交。旧的错误版本号会留在仓库中,但你可以通过新版本覆盖线上文件。

Mac 用户为什么必须清理 .DS_Store?
WordPress 主题检查器会扫描所有提交的文件,.DS_Store 和 __MACOSX 会被识别为“多余文件”而报错。手动清理虽然多了一步,但能避免不必要的审核驳回。


六、总结

WordPress 主题更新分为两个阶段:审核期用 ZIP 上传,上架后用 SVN 提交。SVN 作为中心化的版本控制系统,在官方主题仓库中被用作发布工具,因此每一次提交都必须是慎重且不可逆的。核心操作可以概括为:检出仓库 → 复制版本目录 → 修改代码和版本号 → 清理隐藏文件 → 提交。

新手需要留意的两点:一是版本号必须递增且符合规范,二是提交前务必确认所有修改无误。一旦养成“提交即发布”的习惯,SVN 的流程反而比 ZIP 上传更——毕竟你不再需要打包、上传、等待页面刷新了。