不是因为写得差,是因为它从根上违反了官方目录的几条硬规则。举三个现成的:
http://www.caogenbj.com/laoshi.php);wuli.fre9.com 的链接。这三条在官方审核里都属于”把主题当广告位”——主题应该是通用的,不该绑定某一个站。
这一篇就讲清楚:官方目录到底卡什么,以及”要不要去提交”这件事本身值不值得。
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( '/' ) )。
注意这是”必须”,不是”建议”。 没转义就是驳回,没有商量。
不能在 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>),这一条就过不去。
不允许把功能做成”付费才能解锁”。比如”免费版只能改颜色,专业版才能改布局”——这在官方目录里是禁止的。
也不能在主题里弹窗要求你关注公众号、加群、给好评。
这条就是我那三处问题踩的:
允许的只有一种:作者 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,装上去之后在”外观”菜单里多一项,点一下就把上面这些规则全跑一遍,按”必需 / 警告 / 建议”分级列出来。
它查的东西包括:
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 会报的项。
四步:
wordpress.org/themes/upload 上传;审核是人工的,会真的打开你的代码看。所以别想着”机器检测不到”。
说我的判断:对绝大多数人,不值得。
理由三条:
一、收益不确定。
官方目录的流量确实大,但竞争也大。一个没有任何差异化、没有截图、没有好评的新主题,进去就是几千名开外。你指望它给你带流量,不如把精力放在内容上。
二、维护成本是长期的。
通过审核只是开始。之后每次 WordPress 大版本更新,你都得跟着测;有人提 issue,你得回;有人给一星,你得受着。这是”运营一个产品”,不是”分享一段代码”。
三、你的主题大概率绑着你的站。
就像我这个,页脚是品牌名、侧栏是自己的表单、模板里是自己站的外链。要改成通用主题,等于重写一遍。 而重写完之后,它就不再是”我站的皮肤”了。
那什么情况下值得?
第三条其实是最大的价值。 走一遍审核,你对”转义、前缀、enqueue、模板层级”这些的理解会完全不一样——因为每一条都有具体的人在挑你的错。
就算永远不提交,这四件事也该做,因为它们直接影响你自己的站:
规范不是为了取悦审核员,是为了让半年后的自己少踩坑。
一句话记住:官方目录卡六条(许可、转义、enqueue、不锁功能、不导流量、带前缀);不打算提交也要守着,因为守的是自己的站。
下一篇是路线图:如果你手里这个”改出来的主题”想变成真正属于自己的东西,该怎么一步步重构。