上个月,一位客户向我发送了一个链接,其中有一行简短:"让我们的看起来像这样。"没有主题名称,没有开发人员联系,没有重建预算。在我说那是两周的工作还是 CSS 的一个下午之前,我需要知道该网站实际上运行了什么 - 最快的诚实答案来自页面本身,而不是来自询问。
WordPress对此异常慷慨,它在它服务的每个页面中都发布自己的结构,这意味着一个站点告诉你无论是否有人打算渲染它是什么主题本指南解释了该信息在哪里,如何手读它,以及为什么有时会缺少答案而站点却没有少WordPress WordPress 主题检测器 在一个请求中执行相同的读取。
TL;博士: 打开页面源并查找从中加载的样式表
/wp-content/themes/<slug>/.那个slug是主题文件夹.取/wp-content/themes/<slug>/style.css顶部的标头块命名主题、版本、作者,以及(如果是子主题)它在 a 中扩展的父主题Template:线。如果没有负载从/wp-content/、该站点仍然是 WordPress:托管主机或优化插件可能已重写了路径。
WordPress 页面在哪里命名自己的主题?
每个主题都必须从自己的文件夹加载其样式表,并且 WordPress 从固定位置提供主题文件: /wp-content/themes/<slug>/。因此,对任何页面做的第一件事就是查看源代码和搜索 wp-content/themes.回来的样子是这样的:
<link rel="stylesheet" id="astra-theme-css"
href="https://example.com/wp-content/themes/astra/assets/css/minified/main.min.css?ver=4.6.2" />
之间的文件夹名称 themes/ 下一个斜杠是答案: astra。这是关于响应的事实,而不是从页面外观的猜测。
旁边还有另外三个信号,值得了解,因为它们告诉您,当主题被隐藏时,该网站根本就是 WordPress:
| 信号 | 它出现的地方 | 它证明了什么 |
|---|---|---|
/wp-content/themes/<slug>/ |
样式表和脚本 URL | 的活动主题's文件夹 |
/wp-includes/ |
核心脚本 URL 类似 wp-emoji-release.min.js |
WordPress 核心正在为页面提供服务 |
<link rel="https://api.w.org/"> |
<head>、和a Link: 响应标头 |
REST API 已启用 |
<meta name="generator" content="WordPress 6.7"> |
<head> |
核心版本,当它没有被剥离时 |
Generator标签是最常被移除的,大量安全插件将其剥离,以及主题中的一行's functions.php does一样,因为它向任何扫描已知问题的人宣传一个确切的版本,它的缺失并没有说明该网站是否是wordpress。
题's实名和版本怎么弄?
slug的文件夹不是一个名称。 astra 是可识别的, twentytwentyfour 很明显,但大量的slugs是机构外没有人会知道的缩写。这个名字进一步存在一个请求。
每个主题都包含一个 style.css 在其根中,wordpress 要求该文件以声明自己的注释块开头。获取 https://example.com/wp-content/themes/astra/style.css 文件顶部写着:
/*
Theme Name: Astra
Theme URI: https://wpastra.com/
Author: Brainstorm Force
Version: 4.6.2
Template: astra
Text Domain: astra
*/
那些标头字段不是有人选择遵循的约定。 主题手册 使得 Theme Name wordpress 将接受任何主题的强制性规定,这就是为什么这适用于从未在任何地方发布的定制主题。
对版本有一个警告,它比人们预期的更重要。 Version: is theme 作者为那个版本写的。它是一个未触及的主题准确和不可靠的那一刻, 有人编辑文件而不碰数字, 这不断发生在已经"只是快速固定"几次的网站上。将其读作主题'自己对自己的主张。
2个主题出现是什么意思?
从两个主题文件夹加载样式表的页面几乎总是运行子主题。
儿童主题是一个小文件夹,它覆盖了父母的一部分而不是复制。孩子's style.css 在 a 中命名其父级 Template: line,而wordpress加载了两个文件夹,那段关系就是重点:父级可以更新,而不会破坏自定义,也就是 推荐方式 修改您未编写的任何主题。
所以当你看到两者时 astra 並 astra-child,活跃主题为 astra-child 而父母是 astra. X = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 Template: field 解决它,而不是从文件夹名称中猜测 - 很多儿童主题根本不是以他们的父母命名的。
这也是自动答案以特定、可重复的方式出错的地方。将 slug 与已发布主题相匹配的目录查找将很乐意识别 父母,因为家长是被发表的,并报告说作为答案,页面在这里是更好的权威:它加载的样式表就是渲染它,句号。
为什么网站根本不显示主题?
这种情况值得理解,因为这是您自信的工具所在。
几个普通设置从页面中删除主题文件夹:
- 缓存或优化插件,将每个样式表连接成一个组合文件
/wp-content/cache/。合并后的文件包含主题's CSS;主题's文件夹名称从标记中消失。 - 从重写路径为资产提供服务的主机或 CDN,因此
/wp-content/themes/astra/...到达时为/assets/a1b2c3.css。 - WordPress是管理员和API但有其他东西渲染前端的无头设置,没有通常意义上的主题。
- 一个根本不是 WordPress 的网站。
4个从外面看是相同的如果你检查的只是"我找到主题文件夹"他们不是同一个答案,并且报告前三个作为"不是WordPress"在自信的方向上错误检查其他信号- /wp-includes/、REST API 链接、 wp-json route - 在结束任何事情之前。一个站点可以不服务于它的主题路径,并且仍然可以回答 https://example.com/wp-json/ 使用 JSON 索引,它可以解决它。
扫描内部页面而不是主页也比人们预期的更有帮助。主页是大多数网站上缓存最严重、优化最积极的页面;博客文章或联系页面经常加载主题'自己的文件,未受影响。
是否合法?网站所有者知道吗?
阅读公共页面是一个正常的请求,您的浏览器每次访问时都会发出相同的请求,并且网站's访问日志记录它的方式与记录其他访问者相同。检查主题不会触及管理区域、提交表单或尝试登录。
你用答案做的就是有规则的部分。一个主题's名称和版本是事实;主题's代码是许可的,大多数WordPress主题是GPL,这给了你很多东西,但与"任何事情都去"与某人's品牌,他们的图像,或他们的内容。识别主题,这样你就可以购买相同的主题是正常使用。复制网站不是主题问题。
如何在不读取源的情况下快速检查?
手动的顺序是:查看源代码、搜索 wp-content/themes、取slug,取那个文件夹's style.css、读取头部,从一个终端上看是两个命令:
curl -s https://example.com | grep -o 'wp-content/themes/[^/]*' | head -1
curl -s https://example.com/wp-content/themes/astra/style.css | head -20
的 WordPress 主题检测器 runs excel that, 关注孩子到家长的链接, 并列出它使用的信号, 这样你就可以检查推理而不是相信一个判决, 它也分离了三个重要的结果:找到主题, WordPress但主题无法读取, 根本没有WordPress信号。
插件是一个单独的问题,有单独的证据和更大的警告,这就是为什么它们是一个单独的工具 - WordPress 插件检测器 阅读同一页面以获取其上加载的内容。如果您位于此的另一侧,请发布您自己的主题或插件 readme 生成器 写的 readme.txt wordpress。org 目录解析。



