
短代码(Shortcode)是 WordPress 最具特色的核心功能之一。短代码是开发者与网站创建者之间的桥梁,允许人们在几乎任何他们想要的位置放置精心设计的内容。插件开发者非常喜欢短代码,因为这让其用户在展示内容的方式和位置上拥有了更大的灵活性。
如果您不知道什么是短代码以及它们长什么样,它们就是包裹在方括号中的古老代码样式文本。它们看起来大概是这样的:
这个特定的短代码被称为 embed 短代码,默认内置在 WordPress 中。它的作用是将该 URL 中的视频嵌入到您的内容中。如果您想尝试一下,只需复制并粘贴上述短代码到您的网站中即可。
在幕后,当 WordPress 在您的内容中遇到短代码时,它会被处理并转换为其他内容。在上述我们的案例中,每当检测到
短代码时,WordPress 就会获取短代码中的 URL,并根据其拥有的一系列内容提供商进行匹配检查。找到匹配项后,它就会获取相应的 iframe 嵌入代码并将其显示出来。
那么问题出在哪里呢?听起来很简单,您只需输入带有括号的简短文本即可搞定。
这就不得不提到短代码 API(Shortcode API)了……
遍地开花的短代码
短代码 API 为开发者打开了创建短代码的大门。正因如此,开发者可以在自己的插件中添加专属的短代码。
这很棒,现在只需一小段类似代码的片段(因此得名“短代码”),无论是初学者还是高级用户,几乎都可以在任何地方放置他们想要的任何类型的内容。
WordPress 默认只有少数几个短代码。由于数量很少,仅凭记忆打出来很容易。但是如果您安装了几个插件,短代码的数量很快就会激增到十几个甚至更多,在某些情况下还会超过一百个。每个短代码都有自己的一套属性和使用说明。每个插件很可能都会提供某种文档,介绍其所有短代码的工作方式,并列出每个短代码中可用的所有参数。但如果您试图记住所有的短代码及其属性,那真是要抓狂了。
问题在于,没有一个集中的地方可以让您查找网站上可用的所有短代码以及如何使用它们。
一些尝试解决该问题的方案
一些插件试图通过在易于访问的下拉菜单中展示其所有专属短代码来解决此问题。点击其中一个就会输出该短代码,并附带其所有可能的属性。不再需要去死记硬背,这是一件好事。

有些插件更进一步,添加了一个带有复选框和颜色选择器的设置弹出表单,用来填充短代码的属性。

这种解决方案在一定程度上是有效的。但是,每个插件只列出自己的短代码。因此,如果每个插件都创建自己的短代码选择器形式,您难免会在屏幕上同时遇到多个短代码选择器(这种情况以前就发生在我身上)。

换句话说,每个插件各自为政,并为自己的短代码实现专属的解决方案。有些插件会在“添加媒体”按钮旁边添加一个新按钮,或者在 TinyMCE 内部添加一个新按钮。
所以现在您可能会想:“为什么不把其他插件的短代码也收集起来,一并包含在您的下拉菜单 / 短代码选择器中呢?”嗯,我当初也是这么想的。但是,这说起来容易做起来难。我稍后会解释原因,但首先让我们看看一个理想的解决方案会是什么样子。
理想的解决方案
完美的方案是创建一个插件,收集您网站中所有可用的短代码,然后向您展示列表,并帮助您填写所有属性。而且每次安装新插件时,所有新引入的短代码也会一并呈现在您面前。
想象一下,有一个中心位置存放了您的所有短代码,方便随时取用。每个短代码都会描述其功能以及所属的插件。然后对于每个可用属性,想象一下它们都配有标签、适当的值选择方式以及描述说明。您将看到下拉菜单、颜色选择器、单选按钮、开关切换等等。
类似这样的东西将使我们作为网站和内容创作者的生活变得更加轻松。不再需要查阅不同的文档,也不再需要为了复制要使用的滑块所生成的短代码而到处翻找管理后台的不同版块。
潜在的阻碍
遗憾的是,目前要做成这样的事情相当困难。没有一种万无一失的方法可以获知短代码的所有详细信息。您可以获取所有短代码的列表,但只能获取它们的实际标签/名称,而无法获取有关它们的任何附加详细信息,例如属性列表、它们的作用及其类型(例如字符串、颜色或数字)。您也无法获得每个属性的描述说明。
顺便提醒各位开发者:是的,shortcode_atts 函数新增了第三个参数,但它并不是必填参数。因此,除非世界上所有的插件开发者都去实现它,否则我们仍然没有确切的方法来确定某个短代码的所有属性。
短代码 API 没有提供任何用于添加短代码描述、类型转换属性或属性描述的机制。而且除非 WordPress 本身添加一个用于访问短代码的中心区域,否则我怀疑这种机制很难被创造出来。
总结
目前,整理短代码的任务落在了每位开发者身上。除非在 WordPress 内部开发出一种集中式方法,否则预计您的后台仍将继续出现多个“添加短代码”按钮。至于是否应该将此类功能加入 WordPress 核心,这本身又是一个巨大的争议议题。
替代方案
有些页面构建器插件处理此问题的方式有所不同。它们没有采用程序化检测短代码的方式,而是提供了短代码映射器(shortcode mappers),用户可以在其中手动输入短代码的每个详细信息。完成后,它便可以在页面构建器内使用。虽然 这行得通,但它们仅在您自己的网站上可用。
我们 Page Builder Sandwich 团队正在开发一款有望解决这一短代码难题的产品。订阅下方的简报,即可及时获取我们的最新进展通知。