你把一个文件夹扔进 wp-content/themes/,WordPress 凭什么知道它是个主题,而不是一堆随便放的 PHP 文件?
不是看文件夹名。
是看 style.css 开头的那段注释。只要能正确解析出 Theme Name,它才承认“这是一个主题”,并把它列进后台的“外观 → 主题”里。
所以那段注释的地位,相当于主题的身份证——写错了,主题在后台根本不显示,你还以为是文件放错了位置。
标准写法是这样:
/*
Theme Name: 草根站长笔记
Theme URI: http://www.caogenbj.com/
Author: 你的名字
Author URI: http://www.caogenbj.com/
Description: 一句话介绍这个主题
Version: 1.2
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: caogenbj
Tags: blog, custom-colors
*/
逐个说:
| 字段 | 作用 | 必填? |
|---|---|---|
| Theme Name | 主题名,后台显示的就是它 | 必填 |
| Theme URI | 主题主页地址 | 可选 |
| Author | 作者名 | 可选 |
| Author URI | 作者主页 | 可选 |
| Description | 主题描述 | 可选 |
| Version | 版本号,升级时用 | 可选 |
| License | 授权协议 | 可选(但公开主题必须有) |
| Text Domain | 翻译用的“域名”,配合 __() 做多语言 |
可选(但强烈建议) |
| Tags | 标签,公开主题在目录里分类用 | 可选 |
讲完标准,说点难听的——caogenbj 的 style.css,我打开一看,有四个问题。
BOM 是啥?一个藏在文件最前面的“看不见的字符”,编码是 EF BB BF。它不显示,但真实存在。
它怎么来的?通常是 Windows 记事本或某些编辑器“另存为 UTF-8”时自动加的。
危害是什么?PHP 输出时会把这三个字节原样吐出去,导致页面开头多出一点空白。绝大多数情况下看不出来,但有两种情况会翻车:
<?xml,前面多三个字节,解析就失败;header() 就会报“headers already sent”。我这次排查站点地图打不开,最后发现根子之一就是这类看不见的空白。
怎么去掉:用 VS Code 打开文件,右下角能看到编码,点一下,选“通过编码保存 → UTF-8”,注意是 UTF-8,不是 UTF-8 with BOM。或者用 Notepad++ 的“编码 → 转为 UTF-8 无 BOM 编码”。
原文写的是:
Author URI: http:/www.caogenbj.com
看清楚了吗?http:/ 只有一个斜杠,正确应该是 http://(两个)。这个错不影响主题运行,但点过去是坏链接。属于“打字打快了”的典型。
Text Domain 是干什么的?简单说,它是“翻译的命名空间”。
当你想让主题支持多语言(比如以后出个英文版),代码里会写 __( '阅读更多', 'caogenbj' ),第二个参数就是 Text Domain。WordPress 靠它去对应的翻译文件里找译文。
没有它,以后想做翻译就得回头补,而且补的时候要改一堆代码。一开始就写上,成本为零。
原文是“草根笔记网站主题是一款自适用的主题,最求极简和实用”。
“自适用”应该是“自适应”,“最求”应该是“追求”。这个不影响功能,但它是主题的“门面”,别人(包括你自己以后)打开后台会看到。顺手改掉。
/*
Theme Name: 草根站长笔记
Theme URI: http://www.caogenbj.com/
Author: 草根站长笔记
Author URI: http://www.caogenbj.com/
Description: 一个草根站长的笔记,记录 WordPress 建站、SEO 与生活小知识。
Version: 1.3
License: GNU General Public License v2 or later
Text Domain: caogenbj
*/
注意几件事:
Theme Name 别用引号包起来(我原来写的是 Author: "草根笔记",引号会一起被当成名字的一部分);http://;Text Domain 的惯例是跟主题目录名一致(caogenbj);/* 开头、*/ 结尾,中间每行一个字段,冒号后面空一格。改完不用凭感觉。去后台“外观 → 主题”,看你的主题卡片:
Theme Name 写错、格式不对,或者文件有 BOM。如果主题在后台显示正常,但前台白屏,那问题就不在身份证,往下查模板或 PHP 报错。
一句话记住:style.css 开头那段注释是主题的身份证,Theme Name 必填,格式不能错,文件不能带 BOM。
下一篇,我们把前面六篇的东西合起来,拿 caogenbj 这个真实主题整个拆一遍——看它的文件结构能读出什么。