【历史更正】WordPress文章目录:从旧jQuery插件到原生锚点

历史更正(核查于 2026-09-01): 本文最初发布于 2011 年,当时介绍一个名为 jQuery Table of Contents 的 WordPress 插件。今天我无法在 WordPress.org 的官方插件目录或官方插件 API 搜寻结果中核实这个确切名称的现行条目;这并不能证明它从未存在,也不能判断它后来是否改名。旧文中的下载建议、主题选择器与介面说明不应再当作当前安装指南。请勿从不明镜像下载旧安装包。

现在怎样为 WordPress 文章制作目录

文章目录的本质是一组指向页面内标题的锚点连结,并不需要 jQuery。对少量重要长文,我现在优先使用 WordPress 原生的标题区块、HTML 锚点和清单区块;需要大量自动生成时,才评估仍受维护的插件或自建区块。目录有助于浏览,但本文不承诺它会提高搜寻排名。

2011 年旧文留下了什么

旧插件要求填写“内容选择器”和要收集的标题标签。当时本站主题的内容选择器是 #content .contenttext,旧文记录的插件预设值是 .single .entry,并以 h2h3 产生目录。这些资料只保留为历史记录:选择器完全依赖当年的主题 DOM,换主题或版型后很容易失效;把所有标题都变成“回到页首”连结也不是今天应直接照搬的设计。

原有截图来自已经失效的旧站地址,而且显示的是过时介面,因此本次没有重新刊登。没有足够证据确认旧插件目前的维护、安全或相容状态。

先把标题结构写正确

目录不能修补混乱的文章结构。WordPress 的标题区块说明建议依顺序使用标题,以改善可读性与无障碍性。多数版型会把文章标题输出为 h1,正文通常从 h2 开始,再以 h3 表示其子节;实际输出仍应在前台检查,因为主题或模板可能不同。

先在编辑器的“文件概览/大纲”检查:

  • 不要只为了字体变大而使用标题;视觉样式交给主题或 CSS。
  • 不要从 h2 无理由跳到 h4
  • 标题应描述该节内容,避免每节都叫“说明”或“其他”。
  • 翻译文章时保留相同的层级,即使标题文字不同。

选择适合的做法

做法 适合情况 主要代价
原生 HTML 锚点+清单 少量、需要精确控制的长文 修改标题后要手动同步目录
WordPress 实验性目录区块 能在测试站确认该区块存在,并接受未来变更 官方仍标示为实验性,不能假设所有站点都有
仍受维护的目录插件 大量旧文需要统一自动化 要持续审查更新、输出、效能与移除路径
自建动态区块/插件 有特殊版型或严格工程需求 需要开发、测试、安全维护与迁移计划

如果只有几篇长文,第一种通常最容易理解、备份和迁移。

做法一:使用原生锚点与清单

建立稳定锚点

  1. 选取一个标题区块,在右侧设定展开“进阶”。
  2. 在“HTML 锚点”填写稳定名称,例如 installconfigureverify
  3. 每个锚点在同一页面内必须唯一。WordPress 的页面跳转说明还注明:锚点区分大小写、必须以英文字母开头、不能含空格,可使用连字号、底线、冒号与句点。
  4. 在文章前段加入清单区块,把每项连到对应的 #锚点

例如:

- [安装](#install)
- [设定](#configure)
- [验证](#verify)

多语言文章可以使用语言中立而稳定的锚点,例如三种语言都保留 install。重点不是一定使用英文,而是译文目录的 href 必须与该页实际的 id 一致,且不能重复。

在前台验证

预览已发布版型,而不只看编辑器:逐一点击目录、重新载入带有 #锚点 的网址,并测试浏览器上一页/下一页。若固定页首遮住标题,可在子主题或站点样式中加入并按实际页首高度调整:

.entry-content :is(h2, h3, h4)[id] {
  scroll-margin-top: 6rem;
}

做法二:谨慎试用核心目录区块

WordPress 开发者文件目前列出 core/table-of-contents:它会汇整标题、为标题加入 HTML 锚点,并在伺服器端动态输出。然而官方文件明确标示此区块为实验性,可能在没有通知的情况下改变或移除。

因此先在预备站的区块插入器中确认是否真的可用,再测试最大标题层级、有序/无序清单、分页内容、既有锚点和主题样式。若区块不存在,不要把网上的实验性代码直接贴进正式站;改用原生锚点,或评估当前插件。即使区块可用,也要准备转换成普通清单的退路。

做法三:评估当前目录插件

安装前

只从 WordPress 管理后台或 WordPress.org 官方插件目录取得候选项,不从旧网盘或镜像安装 ZIP。先备份,并在预备站记录 WordPress、PHP、主题及相关插件版本。目录中的安装量、评分、最后更新日与相容声明都会变化,应在安装当天重新核对,而不是依赖本文的截图或排名。

验收清单

  • 能限定正确的文章内容范围,而不是依赖某个旧主题的硬编码选择器。
  • 保留已有标题 id,对重复标题产生稳定且唯一的锚点。
  • 正确处理 h2h3 层级、中文和日文标题、同名标题及分页文章。
  • 目录在窄萤幕、键盘操作和常用辅助技术下仍可理解;若有折叠按钮,也要测试焦点与展开状态。
  • 没有 JavaScript 时,基本锚点连结仍能使用;前台资源只在需要目录的页面载入。
  • 不把文章锁进难以移除的短代码、私有区块或隐藏资料。
  • 与快取、延迟载入、压缩和主题的固定页首共同测试。

从旧方案迁移

先清点旧短代码、区块、文章栏位、自动插入位置与自订 CSS。停用旧自动插入,避免新旧目录同时出现;抽样检查长文、短文、无标题文章和多语言文章。确认停用/移除后正文及既有锚点仍完整,再处理旧设定和样式。若无法安全回退,就先不要在正式站切换。

做法四:给开发者的最低实现要求

自建方案应放在插件或站点专用插件中,不要把内容功能绑死在可更换的主题。动态输出可以避免把生成后的目录 HTML 永久写入每篇文章,但仍要定义清楚:处理哪些文章类型与标题层级、如何保留既有 ID、重复 ID 怎样加后缀、文章更新时怎样清除快取,以及分页和动态区块怎样处理。

依照 WordPress 的安全 API 指南输出转义说明,设定输入要验证与清理,输出要依所在情境尽可能晚地转义。不要只用一个正则表达式粗略改写任意 HTML,也不要在未经测试时改变已经被外部连结使用的标题 ID。这里刻意不提供一个“复制即用”的 PHP 片段,因为主题、区块和输出管线不同,未经整合测试的范例反而容易破坏内容。

常见故障

  • 目录没有项目: 确认文字真的是标题区块,而非放大字号的段落;再检查内容范围和标题层级。
  • 点击后位置不对: 检查重复 ID、大小写、快取旧页面,以及固定页首是否遮挡目标。
  • 编辑器正常、前台异常: 在预备站逐层排查主题、快取/压缩和插件冲突,不要一次停用正式站的所有功能。
  • 翻译页跳错位置: 检查该语言页面的目录连结和实际锚点是否成对,不要假设自动音译永远一致。
  • 出现两个目录: 检查主题、区块和插件是否都启用了自动插入。

发布前检查

  • 桌面与窄萤幕逐项点击目录,并直接开启至少一个带片段识别码的网址。
  • 只用键盘浏览目录;若目录可折叠,也检查按钮名称、焦点与状态。
  • 检查重复标题、非拉丁文字标题、无标题文章、分页文章及嵌套区块。
  • 更新一处标题,确认目录、快取和既有外部锚点的预期行为。
  • 暂停自动目录方案,确认正文仍然可读,并记录回退步骤。
  • 不把“可浏览”误写成 SEO、流量或收益保证。

核查范围与不确定性

本文在 2026-09-01 核查 WordPress.org 文件、开发者文件、官方插件目录与官方插件 API。精确名称“jQuery Table of Contents”没有出现在当次官方 API 搜寻结果中,但这只能支持“目前无法核实该名称的现行官方条目”,不能证明历史版本的出处或最终去向。实验性核心区块及任何第三方插件的状态也可能在本文之后改变,部署前必须重新检查当前站点。

官方资料

Leave a Reply