好吧,哎呀。当我分享 Miriam 的 “我是否已加入 IndieWeb?” 并发表了一篇 简短的文章来抱怨我自己加入 IndieWeb 遇到麻烦 时,我打开了一个小小的潘多拉魔盒。但这是一个好的潘多拉魔盒。
我想是在发布那篇简短文章后的第二天,David Shanske 联系了我,并主动提出帮助我理解 IndieWeb 及其组成部分。天哪,这真是太有帮助了!以至于我想 链接你到 David 在我们谈话后写的一篇新文章,然后在这里尽可能地总结一下,因为 (1) 将事情写下来很有帮助,并且 (2) 可以作为以后的参考。
是的,IndieWeb 令人困惑。
David 实际上帮助某人设置了他们的 WordPress 网站,使其具有 IndieWeb 功能。那个人也难以理解各个部分是如何组合在一起的。因此,当 Miriam 和我写作时,David 已经想到了这一点。
“IndieWeb” 对许多人来说是一个新术语,这就是许多困惑产生的原因。它是一个框架吗?一种理念?一套标准?根据它是哪一种,对它是什么样子的期望就会发生变化。
它有点像上面所有这些。并且需要稍微巩固一下。一旦你从这些不同的角度看待 IndieWeb 本身,它就没有什么本质上的令人困惑之处。在阅读了 David 的文章后,我的理解是 IndieWeb 更像是一套协议。有点像在标记中使用结构化数据或 OpenGraph。本身没有需要安装的东西,但有一些关于如何将它们集成到你的工作中的标准。
你的身份赋予了 IndieWeb 力量。换句话说,你的网站建立了你的身份,并且可以用于做很多事情,例如
- 在提及他们时通知其他支持 IndieWeb 的网站
- 在提及你时接收来自其他 IndieWeb 网站的通知
- 获取提及的信息并将其格式化以进行显示
- 通过你自己的网站验证你的身份(类似于 Google 登录按钮,但连接到你的网站)
- ……以及其他事情。
如果这有点像 pingback,那么它确实有点像。但更加健壮和维护。
在 WordPress 上实现 IndieWeb 功能与在静态网站上实现不同(并且可能更容易)。
最大的区别在于 WordPress 提供了实现 IndieWeb 功能所需的大量要求。我喜欢 David 如何解释它
WordPress 上的 IndieWeb 实现是一系列你可以选择使用或不使用的构建块,这使得它很棒,但有时也很令人困惑。WordPress 具有决策而非选项的理念。但是 IndieWeb 完全是关于选项的……关于构建适合你的功能。
这些构建块是安装到 WordPress 中以添加 IndieWeb 协议和技术的插件。它们易于使用真是太棒了,因为这省去了很多工作。但是,运行静态站点,你需要自己建立大部分内容。
David 的文章完全专注于 WordPress 的实现。你的体验可能会有所不同,但阅读了他的文章——以及希望也阅读了这篇文章——之后,你肯定对可用的协议以及它们是如何组合在一起的会有更好的了解。
IndieWeb WordPress 插件建立你的身份。

我以为它在幕后做了很多事情,但实际上比这简单得多
该插件本身负责按照 IndieWeb 的方式建立你的身份。它提供了一个 h-card 模板和小部件。H-Card 是用于标记有关个人或地点的信息的标记。因此,这是一个许多人在其网站上选择放置的元素。
因此,实际上,可以通过正确标记 WordPress 主题来获得相同的东西。这里的便利之处在于,你获得了一个方便的小模板,该模板已标记以支持 h-card
开放格式,以及一个将其放入主题小部件区域的小部件。
这是一个来自 Microformats2 文档 的 h-card
标记的超级详细示例
<div class="h-card">
<img class="u-photo" alt="photo of Mitchell"
src="https://webfwd.org/content/about-experts/300.mitchellbaker/mentor_mbaker.jpg"/>
<a class="p-name u-url"
href="http://blog.lizardwrangler.com/"
>Mitchell Baker</a>
(<a class="u-url"
href="https://twitter.com/MitchellBaker"
>@MitchellBaker</a>)
<span class="p-org">Mozilla Foundation</span>
<p class="p-note">
Mitchell is responsible for setting the direction and scope of the Mozilla Foundation and its activities.
</p>
<span class="p-category">Strategy</span>
<span class="p-category">Leadership</span>
</div>
看到这些类名了吗?像 .h-card
、u-photo
、p-name
等类都为个人的身份提供了上下文含义,然后将其解析为 JSON
{
"items": [{
"type": ["h-card"],
"properties": {
"photo": ["https://webfwd.org/content/about-experts/300.mitchellbaker/mentor_mbaker.jpg"],
"name": ["Mitchell Baker"],
"url": [
"http://blog.lizardwrangler.com/",
"https://twitter.com/MitchellBaker"
],
"org": ["Mozilla Foundation"],
"note": ["Mitchell is responsible for setting the direction and scope of the Mozilla Foundation and its activities."],
"category": [
"Strategy",
"Leadership"
]
}
}]
}
该插件不负责发送、接收或解析。相反,它为 WordPress 网站提供了一种在标记中验证你的身份的方法。
并非所有 WordPress 主题都支持 Microformats

如果你像我一样第一次看到“Microformats”时感到困惑,David 对其进行了很好的定义
[...] Microformats...一种标记 HTML 以允许识别元素的方法。这是几种方法之一,但它非常简单易读,因此在 IndieWeb 社区中很受欢迎。
正如 David 继续所说,问题在于许多主题的标记方式不适合 Microformats——这就是 Microformats2 插件 的设计目的。也就是说,David 很快指出该插件在实现此目的方面非常有限,他建议改为手动标记主题。
根据 David 的说法,Webmention 插件的下一个主要版本可能会包含更智能的方法来检测它可以使用的内容和图像,并将其格式化为 Microformats2 支持。
Webmentions 发送和接收通知。

好的,因此,如果你已通过你的网站建立了你的身份,以便你可以被发现,并且你的网站已使用 Microformats2 标记为支持 h-card
。太棒了!你仍然需要在中间充当操作员的东西来发送和接收通知。换句话说,当另一个网站提及你时——称为 Webmention——提及你的网站需要一种方法来支持将该提及发送给你,并且你的网站需要一种方法来接受它(反之亦然)。
这就是 Webmention 插件 的作用。它可能也是我大多数 IndieWeb 困惑的根源。我以为它正在格式化数据,并且需要额外的服务来发送和接收它。不是!它实际上是发送和接收数据,而不是创建提及。回到 David
在构建之初,该插件仅处理接收和发送 webmention 的业务,而不处理任何程度的显示。Semantic Linkbacks,一个单独的插件,不仅处理 webmention,还处理旧的 pingback 和 trackback 协议。
因此,Webmention 插件正在通信通知。同时,另一个名为 Semantic Linkbacks 的插件处理数据。Semantic Linkbacks 到底是什么?
Semantic Linkbacks 获取和处理数据。

Semantic Linkbacks 是另一个处理流程一部分的插件。我无法比 David 更好地解释它
Semantic Linkbacks 获取 webmention(即另一个网站已链接到你的网站上的内容的通知),获取另一个网站,并尝试呈现该信息的显示。如何执行此操作可能会有所不同,从仅显示个人资料照片(如果可以找到)到将其解释为完整评论。
它使用 Microformats 执行此操作。
我原本以为主要的 IndieWeb 插件已经实现了这一点,因为它处理其他标记。但它只提供了在你的网站上获取身份的模板和部件。一旦 Semantic Linkbacks 插件获取到一个传入的 webmention,它就会获取数据、格式化数据,然后尝试显示它。
听起来这个插件将在即将发布的 Webmention 插件版本中被合并(或替换)。
由于许多人都不愿意或不习惯修改主题,因此新版本的 Webmentions 将包含几种不同的替代方法来尝试查找要显示的图片或摘要……从 OpenGraph(Facebook 和 Twitter 用于显示提供给它的 URL)到检测页面的 WordPress REST API 版本并使用它来获取作者姓名和个人资料图片。没有一个能提供像微格式那样多的上下文,但体验仍然值得安装。
这当然很好,因为它利用了 WordPress REST API 获取 JSON 响应并将其格式化以供显示。
Brid.gy 是一项帮助显示互动的服务。
Webmention 可以是一种互动,例如有人在 Twitter 上喜欢你的帖子或转发它。

区分点赞、转发、评论以及其他任何事情都需要发生,并且你需要实现 Twitter(或其他)API 来区分这些差异。
你当然可以做到!但如果你更喜欢即插即用,IndieWeb 社区的一位成员创建了一项名为 Brid.gy 的服务。你创建一个帐户,连接你的网站,并向该服务授予应用权限……然后你就完成了!
Brid.gy 所做的事情本质上是实现了 Twitter、Facebook、Instagram 等的 API,这样当它检测到这些服务中与你的联合帖子互动的帖子时,就会向你的网站发送 Webmention,并经过发布到你自己网站的过程。
还有很多!
快速浏览
- IndieAuth:这是一种基于 OAuth 2 的协议。该插件在 WordPress REST API 中建立了一个端点,可用于通过你自己的自托管网站验证你的身份——本质上是自己的 Google 登录按钮,但无需自己建立该端点或依赖单独托管的 API。
- Micropub:对于使用 WordPress 但更喜欢其他编辑器的用户,可以安装 Micropub 插件。这 添加了一个端点,允许你将内容发布到你的网站,并使用支持 Micropub 的编辑器在 Microformats2 提要中创建项目,为你提供更多在 WordPress 块编辑器之外编写内容的选项。
- 简单位置:David 写了这个插件,当他向我演示它时,我印象非常深刻。其理念是它从你的当前位置提取数据,这些数据可用于从显示你撰写帖子时的天气到基于帖子位置创建嵌入地图上的整个帖子存档等所有用途。老实说,我真的很想看到类似的东西直接烘焙到 WordPress 中。
更新后的流程
我试图在我的上一篇文章中制作一个概述各个部分的插图,但让我们尝试使用对正在发生的事情的更新理解来再次尝试。

这一切都理解了吗?
感谢 David 联系我并花时间向我展示在 WordPress 上实现 IndieWeb 的样子。我不能说我完全理解所有细微差别,但我至少感觉我对实现它所需的各个部分——理念、协议和技术——有了相当好的理解。
我想反过来问你!这是否帮助你澄清了一些事情?有什么你难以理解的吗?你觉得现在能够配置一个带有 IndieWeb 功能的 WordPress 网站了吗?让我们到评论区讨论吧!