WordPress 模板层级:一个页面请求,WP 到底按什么顺序找文件

· wordpress · 阅读 13
摘要

改 WP 主题最常见的困惑是「我明明改了某个文件,页面没变」。八成是改错了文件——WP 按模板层级逐级向下找,找到第一个存在的就用,后面的一概不看。 文章详情页的查找顺序 single-post-{slug}.php single-post

改 WP 主题最常见的困惑是「我明明改了某个文件,页面没变」。八成是改错了文件——WP 按模板层级逐级向下找,找到第一个存在的就用,后面的一概不看。

文章详情页的查找顺序

single-post-{slug}.php
single-post-{id}.php
single-post.php
single.php
singular.php
index.php

从上往下,命中即停。index.php 是兜底,任何主题都必须有它,否则 WP 会拒绝启用。

页面、归档、分类的顺序差别

  • 页面:page-{slug}.php → page-{id}.php → page.php → singular.php → index.php
  • 分类:category-{slug}.php → category-{id}.php → category.php → archive.php → index.php
  • 搜索:search.php → index.php
  • 404:404.php → index.php

怎么快速确认当前用的是哪个文件

临时在 functions.php 里加:

add_action('wp_footer', function () {
  global $template;
  echo '<!-- ' . basename($template) . ' -->';
});

刷新页面看源码最后一行,就是答案。查完记得删掉。

一个高频误区

文件名里的 slug 用的是文章的 URL 别名,不是标题。中文标题的别名如果在后台没设,WP 会生成一串编码,按这个去建文件基本对不上。想针对性改模板,用 ID 更稳。