复盘:一个 WordPress 页面到底是怎么拼出来的(附完整流程图)

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

先把前七篇收一下

卷一写到这里,七篇讲了这些:

  1. 一个地址进来,WordPress 走了六步(启动 → 判断 → 查库 → 选模板 → 输出);
  2. 文章走 single 线,页面走 page 线,两条线互不相干;
  3. 分类、标签、搜索、404 各有自己的线,尽头都是 index.php;
  4. 一个主题最少两个文件就能跑(style.css + index.php);
  5. get_header / get_footer 是“搬文件”,零件只写一份;
  6. style.css 开头那段注释是主题的身份证;
  7. 拿 caogenbj 拆了一遍,看它的文件结构和引用关系。

这一篇不引入新东西,只做一件事:把它们串成一张完整的图。

完整的流程图

【浏览器】
   输入 www.caogenbj.com/html-css-table.html
        ↓
【Nginx】
   判断是动态请求 → 交给 PHP → 根目录 index.php
        ↓
【WordPress 启动】
   wp-load → wp-settings → 读配置 → 连数据库
        → 加载插件 → 加载主题 functions.php
        ↓
【解析地址】
   查数据库:这是一篇文章 → is_single() = true
        ↓
【查数据】
   取出标题、正文、作者、时间、分类、标签
        ↓
【模板层级】
   single-*.php → single.php → singular.php → index.php
   找到 single.php ✓
        ↓
【模板执行】
   single.php:
     get_header()   → 搬进 header.php
     the_title()    → 输出标题
     the_content()  → 输出正文
     get_sidebar()  → 搬进 sidebar.php
     get_footer()   → 搬进 footer.php
        ↓
【输出】
   拼成一整段 HTML → 返回浏览器 → 渲染成页面

这张图,就是卷一要你记住的全部。

拿三个真实地址走一遍

光看图还是抽象,用三个真实地址走一遍就具体了。

地址一:首页 www.caogenbj.com

  • 判断:is_home() 为真;
  • 模板层级:没有 front-page.php、没有 home.php → 落到 index.php;
  • 执行:index.php 调 header、跑主循环列出文章、调 sidebar、调 footer。

地址二:文章页 www.caogenbj.com/html-css-table.html

  • 判断:is_single() 为真;
  • 模板层级:没有 single-post-html-css-table.php、没有 single-post.php → 落到 single.php;
  • 执行:single.php 调 header、输出单篇文章、调 sidebar、调 footer(它是手写的那份)。

地址三:分类页 www.caogenbj.com/category/cloudflare

  • 判断:is_category() 为真,且分类别名是 cloudflare;
  • 模板层级:没有 category-cloudflare.php → 落到 category.php;
  • 执行:category.php 调 header、列出这个分类下的文章、调 sidebar、调 footer。

三个地址,三条线,各自走到自己的模板。这就是模板层级在真实环境里的样子。

最该记住的一句话

整张图里,有一句话最重要:

主题开发者只负责“模板层”——选中的那个文件,以及它搬进来的零件。前面的启动、判断、查库,全是 WordPress 核心干的。

这句话能帮你省很多力气:

  • 遇到问题,先判断它在哪一层。是“选错模板”还是“模板里的代码写错”?两者的排查方向完全不同。
  • 别想着去改“WordPress 怎么判断页面类型”——那不是主题的活,改了也白改。
  • 插件能做的事(比如改 head、改摘要),往往在更早的层就介入了,主题里的代码可能根本轮不到执行。

一个自查清单

卷一读完了,你可以用这几个问题自查一下:

  1. 一个地址进来,WordPress 走哪六步?
  2. 文章页和页面页分别走哪条模板线?
  3. 为什么 index.php 必须有?
  4. get_header() 和普通函数调用有什么区别?
  5. style.css 里哪个字段是必填的?
  6. 为什么改了 header.php,全站都变?

如果这六个问题你都能答上来,卷一就算过了。

下一卷讲什么

回头看那张流程图,有一个方块我们一直没展开:

【模板执行】
   single.php:
     get_header()
     the_title()      ← 这些
     the_content()    ← 这些
     get_sidebar()    ← 这些

那几行“输出标题、输出正文”的代码,就是主循环——模板里最核心、也最容易写错的一段。

卷二专门讲它:

  • have_posts() 和 the_post() 到底在干什么;
  • 为什么在循环外调 the_title() 会出事;
  • query_posts 为什么是坏东西,WP_Query 又该怎么用;
  • 一个页面跑两次循环,为什么第二次还能读到文章。

那段代码看着只有几行,但它是 WordPress 主题里最“反直觉”的部分。卷二我们慢慢拆。

小结

一句话记住:请求 → 启动 → 判断 → 查库 → 选模板 → 拼装 → 输出,主题只管最后两步。

这张图建起来,后面所有的模板标签、钩子、函数,才有地方挂。

本系列导航

相关文章

发表回复

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

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