在 WordPress 中为博客文章(或任何其他较长的书面内容)提供目录块是一个好主意,原因有两个:
- 它帮助用户在文章中跳跃到他们需要的内容(并希望不会妨碍他们)。
- 它提供 SEO 价值。
RankMath SEO 插件 将它作为您页面评分的一部分考虑在内(建议您应该有一个),这是由于第二个原因。看看 Google 在您正确操作后可能会给您什么。

其他 WordPress SEO 插件(如 Yoast) 将目录块作为插件的内置附加功能提供 也是有道理的。如果您坚持使用 Yoast,我认为只需使用它就可以了。但我承认,我不喜欢因为插件提供了一个您依赖的微型功能而被锁定在插件中。
那么有哪些选择呢?
目录
- WordPress 目录块中需要查找的内容
- 选项 1:使用专门的目录插件
- 选项 2:等待目录功能被烘焙到核心 WordPress 中
- 选项 3:使用作为另一个 WordPress 插件的子功能的目录块
- 选项 4:自己动手制作目录块
- 最喜欢的?
WordPress 目录块中需要查找的内容
以下是选择目录块时需要查找和考虑的一些事项
- 可自定义的标题 — 许多选项会在实际目录上方添加一个“目录”标题,这是有道理的。您可以关闭它或对其进行自定义吗?它是什么级别的标题?禁用标题的功能对于布局来说可能是必要的,而选择标题级别的功能可以帮助确保正确的 HTML 语义。
- 可折叠 — 为了使目录不那么烦人,许多选项提供了在打开和关闭状态之间切换目录块的功能。您希望这样吗?您是否可以接受它可能需要一些 JavaScript才能工作?它是否以可访问的方式切换?它可以默认设置为您想要的狀態吗?
- 选择要包含的标题 — 也许您只希望所有
<h2>
元素构成目录。您可以这样做吗?子标题会创建一个“嵌套”列表吗?您想要这样吗?您可以关闭某些级别的标题吗?您可以告诉块只包含<h2>
到<h4>
吗?除了标题之外,您是否想将其他内容作为目录的一部分? - 可编辑的链接 — WordPress 中的许多目录插件通常会逐字获取所有标题。也许您想缩短、加长或以其他方式更改目录中的特定链接;就像它不是它链接到的标题的完全文本一样。您可以这样做吗?
- 包含其他链接 — 也许您想链接到不是内容标题的东西。也许它是使用 WordPress 自定义字段 添加到模板中的,或者它是模板的整体一部分,例如评论部分。您可以将它们(或删除它们)作为块中的标题吗?
- 块编辑器支持 — 这实际上就是这篇文章的重点。我没有包含许多没有块的选项。但是肯定有旧式版本使用
[shortcode]
或其他方式实现它。我主要关注块,尽管我很容易想到一种情况,您的目标是在模板中的其他位置放置目录(例如边栏)。因此,拥有多个选项和模块化可能很有用。 - 样式选项 — 就我个人而言,我喜欢自己设置样式(很意外吧!),甚至 取消排队任何插件试图带来的样式表(或脚本) 。但我可以想象,更多的人希望目录看起来很好,并能够直接从编辑器中美观地控制它。这意味着有块选项用于颜色、字体、间距等会很好。
- 语义标记 — 可能值得一看您选择的目录块生成的 HTML,看看它是否有意义。例如,我看到插件生成不实际 嵌套列表 的 HTML 列表,而是向列表项添加类以使它们看起来是嵌套的。不,谢谢。我不确定是否有一种正式的 HTML 格式最适合 SEO,因此语义标记是您能做的最好的事情。
- 标题 ID — 为了使链接的目录起作用,所有标题都需要有 ID,这样才能有东西可以锚定。我认为这里任何值得一试的插件都会将它们添加到标题中,只有在它们还没有 ID 的情况下,但您可能需要验证一下;否则,您会冒破坏现有链接甚至样式和功能的风险。还要考虑正在生成的 ID。例如,我使用 添加锚链接插件,它在所有标题旁边添加一个链接(🔗)图标以提供对 ID 的访问。它生成的 ID 与目录生成的 ID 相同,导致出现重复 ID 问题。可以修复,但要注意这类问题。
选项 1:使用专门的目录插件
专门的目录插件只专注于目录。别无他物。以下是一些这种情况下的可靠选项。
Heroic 目录
在目录中编辑/添加/删除标题的能力(即使在自动生成后)非常强大,而且是该插件独有的。它允许您打开和关闭它(可选),这对于这些目录来说是一个不错的目标,因为它们应该使链接变得有用,而不是妨碍内容。但请注意,这会让您进入排队其他脚本和样式的领域,这可能是理想的,也可能不是您愿意做的事情。

Easy 目录
这不是块编辑器块!相反,它只是自动插入自身,无论是通过内容类型还是通过元框中的一个选择框。
我发现这个插件无法控制目录放置的位置有点奇怪。看起来它将自己插入到文章的顶部附近,很可能就在<!-- more -->
的位置之后。

SimpleTOC
这是我最喜欢的。
我喜欢它,因为它默认情况下不会添加任何脚本或样式。它只是将标题变成一个语义化的 HTML 列表,将它们链接起来,仅此而已。我喜欢这样做。

LuckyWP 目录
有很多功能,但我发现它有点笨拙,因为它没有常规的块控件。相反,你得到的是这个完全自定义的 UI 来更改设置——而且你无法在块本身中预览它看起来的样子。

GutenTOC
感觉这个目录插件很好地体现了 WordPress 块编辑器的精神,但我发现设置有点笨拙。它提供的选择感觉不是特别有用(比如列表的方块?“15”空格?)。

选项 2:等待目录功能被烘焙到核心 WordPress 中
在我写这篇文章的时候,有一个开放的拉取请求,它将在 Gutenberg 插件中启用目录块。可以推测,如果一切顺利,它最终会进入核心。如果你问我,那会很棒,但这并不能帮助解决现在需要目录块的问题。
如果这个功能真的出现,我会倾向于使用它。希望我可以搜索或查询所有帖子的现有目录块,将它们切换到使用原生块,并删除我已有的任何插件。
选项 3:使用另一个 WordPress 插件的子功能的目录块
我不建议使用一个插件来完成很多事情,仅仅因为你想使用它的一小部分。但是,如果事实证明你可以使用大型插件中的很多东西,那么就管理而言,这将是一个额外的好处。
Yoast SEO 高级版
免费版Yoast SEO 插件没有它,但仅需每年 99 美元,Yoast SEO 高级版插件就有。它几乎没有功能。你只需将其添加为一个块,它就会弹出来。你可以编辑标题或删除它——它几乎就像一个“子块”。
链接列表不可编辑,但它会在你更改内容中的标题时实时更新,这是我测试过的其他大多数插件都没有做到的。超级基本,没有样式或功能,但我有点喜欢这样。我不会为了这个功能而运行 Yoast,尤其是付费的,但如果你正在使用 Yoast(长期而言),那么你可能也可以走这条路。

Gutenberg 的终极插件
这可能是迄今为止我遇到过最棒的目录块。同样,我不想为了一个特定功能而使用一个全能插件,但是这个插件中包含的其他功能是可以使用的,所以它是一个不错的选择。

选项 4:自己动手 DIY 目录块
自己制作块并非不可能!我已经用create-guten-block做过几次,不过现在我会选择@wordpress/create-block。这会把你带入 JavaScript 的世界,所以你会用 JavaScript 解析帖子的内容,在帖子内容中查找标题,并从那里开始构建东西。我敢说这算是中级到高级的领域。一方面,这是额外的技术债务,另一方面,至少你拥有完全的控制权,因为它是你的代码。
既然我们专注于构建块,高级自定义字段有一个非常强大的方法来构建自定义块,它将这种力量带回了 PHP 的世界。这样,如果你只关心从其他标题块构建目录,代码会变得容易很多。
Bill Erickson 有一篇帖子——“使用 parse_blocks()
和 render_block()
访问块数据”——最终深入到构建目录块的过程。他提供的这个片段是关于如何遍历帖子中的块并生成 HTML 列表的一个非常有用的参考。
最喜欢?
如果我在一个网站上使用 Yoast SEO 高级版,我会直接使用那个。如果不是,我会选择SimpleTOC。这就是我们在 CSS-Tricks 上所做的。一旦核心功能出现(🤞),我会把它作为一项雨天项目,将所有当前使用目录插件的帖子迁移到使用核心 WordPress 块(假设它最终变得很好)。
感谢您的有用信息。我使用 Kadence WordPress 主题,它有一个内置的 TOC 块,非常棒,易于使用。