主题目录提交:官方审核到底卡什么

作者: admin 分类: wordpress主题制作教程 发布时间: 2026-11-06 18:54

先说结论:我这个主题永远过不了审

不是因为写得差,是因为它从根上违反了官方目录的几条硬规则。举三个现成的:

  1. 侧栏里有个写死的外站域名(http://www.caogenbj.com/laoshi.php);
  2. 页脚有品牌文字和固化的年份(”草根站长笔记 © 2015-2026″);
  3. 分类模板里塞了 30 处指向 wuli.fre9.com 的链接。

这三条在官方审核里都属于”把主题当广告位”——主题应该是通用的,不该绑定某一个站。

这一篇就讲清楚:官方目录到底卡什么,以及”要不要去提交”这件事本身值不值得。

六条硬规则

一、许可证必须 GPL 兼容

WordPress 本身是 GPL v2(或更高),衍生作品必须同协议。你主题里所有 PHP 代码、CSS、JS 都得是 GPL 兼容的,包括你用的第三方库——比如 bootstrap 是 MIT,兼容;但某个”仅供学习使用”的字体就不行。

主题的 style.css 头部通常要写:

License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

二、所有输出必须转义,所有输入必须清洗

这一条是审核驳回率最高的。审核员会逐个文件看,凡是 echo $变量 都要求有 esc_*。

我那个 searchform.php:

<form action="<?php echo home_url( '/' ); ?>">

就会被要求改成 esc_url( home_url( '/' ) )。

注意这是”必须”,不是”建议”。 没转义就是驳回,没有商量。

三、脚本和样式必须用 enqueue

不能在 header.php 里直接写 <script src="...">。必须:

add_action( 'wp_enqueue_scripts', function () {
    wp_enqueue_style( 'my-style', get_stylesheet_uri(), array(), '1.0' );
    wp_enqueue_script( 'my-script', get_template_directory_uri() . '/js/app.js', array( 'jquery' ), '1.0', true );
} );

为什么这么严?因为插件需要能”接管”这些资源——合并、延迟、CDN 替换,都靠这套注册机制。你硬写 <script>,插件就管不了。

我原来的主题全是硬写的(header.php 里直接两个 <script>),这一条就过不去。

四、禁止”主题锁定”

不允许把功能做成”付费才能解锁”。比如”免费版只能改颜色,专业版才能改布局”——这在官方目录里是禁止的。

也不能在主题里弹窗要求你关注公众号、加群、给好评。

五、禁止把流量导出去

这条就是我那三处问题踩的:

  • 页脚写死”Powered by 某某”并带链接;
  • 侧栏塞自己的推广表单;
  • 模板里放指向自己另一个站的外链。

允许的只有一种:作者 URI。 style.css 里的 Author URI 可以链到你自己的站,其他地方不行。

六、必须用前缀,避免函数名冲突

主题里所有函数、类、常量都要带唯一前缀:

function caogenbj_setup() { ... }
class Caogenbj_Walker extends Walker_Nav_Menu { ... }
define( 'CAOGENBJ_VERSION', '1.0' );

为什么?因为主题和插件共处一个 PHP 空间。你写一个 function setup(),别人插件也写一个,就白屏了。

我这次修主题就遇到了同类问题:新函数沿用了旧函数名,旧函数没删干净,直接报 Cannot redeclare,整站白屏。

用工具自查:Theme Check

官方有个插件叫 Theme Check,装上去之后在”外观”菜单里多一项,点一下就把上面这些规则全跑一遍,按”必需 / 警告 / 建议”分级列出来。

它查的东西包括:

  • 有没有 wp_head() / wp_footer()(我那个主题原来就漏了 wp_head());
  • 有没有硬编码的 <script> / <link>;
  • 有没有未转义的输出;
  • style.css 的头部字段是否齐全;
  • 有没有用已废弃的函数(比如 bloginfo('template_url')、wp_title())。

这一条对不打算提交的人也值得跑一次,因为它列出来的问题,基本就是”你这个主题写得不够规范”的清单。

顺带说:我这次修主题,就把 bloginfo('template_url') 换成了 get_template_directory_uri(),把 wp_title() 交给了 title-tag 支持。这两个都是 Theme Check 会报的项。

提交流程

四步:

  1. 把主题打包成 zip(只要主题目录,不要外面再套一层);
  2. 到 wordpress.org/themes/upload 上传;
  3. 进审核队列,等审核员给反馈(通常几天到几周);
  4. 按反馈改,重新上传,直到通过。通过后你会拿到 SVN 权限,以后用 SVN 提交更新。

审核是人工的,会真的打开你的代码看。所以别想着”机器检测不到”。

现实一点:要不要做这件事

说我的判断:对绝大多数人,不值得。

理由三条:

一、收益不确定。

官方目录的流量确实大,但竞争也大。一个没有任何差异化、没有截图、没有好评的新主题,进去就是几千名开外。你指望它给你带流量,不如把精力放在内容上。

二、维护成本是长期的。

通过审核只是开始。之后每次 WordPress 大版本更新,你都得跟着测;有人提 issue,你得回;有人给一星,你得受着。这是”运营一个产品”,不是”分享一段代码”。

三、你的主题大概率绑着你的站。

就像我这个,页脚是品牌名、侧栏是自己的表单、模板里是自己站的外链。要改成通用主题,等于重写一遍。 而重写完之后,它就不再是”我站的皮肤”了。

那什么情况下值得?

  • 你想靠”主题作者”这个身份建立个人品牌;
  • 你本来就打算做一个通用的、给别人用的主题;
  • 你想通过这个过程,逼自己把规范学到骨子里。

第三条其实是最大的价值。 走一遍审核,你对”转义、前缀、enqueue、模板层级”这些的理解会完全不一样——因为每一条都有具体的人在挑你的错。

不提交,也该做的四件事

就算永远不提交,这四件事也该做,因为它们直接影响你自己的站:

  1. 转义。 防 XSS,也防”内容里带引号把页面撑坏”;
  2. 前缀。 防跟插件撞名白屏;
  3. enqueue。 让缓存插件和 CDN 能接管资源;
  4. 跑一次 Theme Check。 当体检报告看。

规范不是为了取悦审核员,是为了让半年后的自己少踩坑。

小结

一句话记住:官方目录卡六条(许可、转义、enqueue、不锁功能、不导流量、带前缀);不打算提交也要守着,因为守的是自己的站。

下一篇是路线图:如果你手里这个”改出来的主题”想变成真正属于自己的东西,该怎么一步步重构。

本系列导航

相关文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Powered by 草根站长笔记 © 2015-2026 草根站长笔记 Inc.版权所有,禁止转载