如何使用 WordPress do_shortcode:教程和最佳实践

曾经希望您可以直接在您的主题模板文件中使用 WordPress 短代码或通常通过 PHP 执行它们吗?使用 WordPress 的 do_shortcode 功能,您可以实现您的愿望——我们将向您展示如何实现。

尽管 WordPress 已经开始从短代码转向块编辑器(又名古腾堡),但短代码仍然在 WordPress 生态系统中发挥着重要作用。
只需一组括号和一些文本——例如 [yourshortcode]——你就可以嵌入内容、执行功能并更有效地完成许多其他任务。

但是,如果您曾尝试将短代码直接添加到主题的模板文件中,您可能会发现这种方法根本行不通。短代码将显示为纯文本——它实际上不会执行短代码并呈现您要显示的内容。
但是,这并不意味着您不能在模板文件中使用短代码。使用 WordPress do_shortcode 功能,您可以轻松地将任何简码直接插入任何模板文件中。
继续阅读以了解其工作原理以及在模板文件中使用 WordPress 简码的其他一些重要最佳实践。

WordPress do_shortcode 是如何工作的?

使用 do_shortcode 函数,您基本上可以将您的短代码包装在 do_shortcode PHP 函数中,并使用它将短代码直接添加到您站点的模板文件中。
您可以将简码放在网站的任何位置,包括以下位置:

  • 标头
  • 页脚
  • 单个模板(例如单个博客文章)
  • 存档模板(例如列出您所有博客文章的页面)

要使用它,您需要做的就是在 WordPress do_shortcode 函数中添加短代码,如下所示:

<?php echo do_shortcode(‘[your_actual_shortcode]’); ?>

然后您可以将此功能直接添加到您的模板文件中。或者,您可以使用 WordPress 挂钩将其插入特定位置。
不确定它是如何工作的?让我们看一个例子。

WordPress do_shortcode 示例

为了帮助您理解 do_shortcode 函数的工作原理,让我们看一个真实的例子。
假设您使用 WPForms 插件创建了一个表单,现在您想使用 do_shortcode 将该表单直接嵌入到主题的模板文件中。
这是如何做的。

1. 备份您的网站并选择一个子主题。

因为您将在本示例中直接编辑模板文件,所以在开始之前必须做两件事:

  1. 备份您的 WordPress 网站以防出现任何问题。
  2. 确保使用儿童主题。如果您不这样做,您的模板更改将在您下次更新主题时被覆盖。如果您不确定在此处做什么,请阅读我们的 WordPress 子主题完整指南。

完成后,您就可以开始了。

2.准备你的简码。

首先,您需要准备要使用的短代码。
对于我们的 WPForms 示例,您可以在 WPForms 界面中找到简码。

3. 编辑模板文件。

接下来,您需要编辑要包含短代码的模板文件。对于此示例,假设您要在每篇博文和页面下方添加表单。
为此,您需要找到主题的single.php模板。要在内容下方添加简码,您需要在模板文件中的 the_content 函数下方添加 do_shortcode 函数。
您可以通过 WordPress 的内置主题编辑器进行编辑,方法是转到外观 → 主题编辑器。或者,您可以通过FTP 客户端连接并以这种方式编辑文件。

4. 增加WordPress do_shortcode 功能。

要完成这些事情,只需在适当的位置添加带有简码的 do_shortcode 函数。确保回显 do_shortcode 函数——否则,您将看不到前端的输出。

保存更改后,您应该会在添加函数的位置看到短代码的输出。这是我们的示例和默认的二十一二十一主题的样子。

如果一切正常,你就完成了。如果您遇到 WordPress do_shortcode 无法正常工作的问题,请继续下一节的一些故障排除步骤。

WordPress do_shortcode 不工作时的故障排除

如果您遇到 WordPress do_shortcode 无法正常工作的问题,请考虑以下一些基本的故障排除步骤。

1.回显简码。

WordPress do_shortcode 本身只返回一个值。如果要实际显示短代码的输出,则需要回显 do_shortcode 函数。
如果您在上面的 WordPress do_shortcode 示例中注意到,我们确保始终回显 do_shortcode 函数以显示值。

2. 仔细检查您是否正确使用了引号。

如果您在使用 do_shortcode 添加短代码后遇到 PHP 错误,则可能是您使用的引号有问题。
一些短代码允许您在短代码内添加参数,如果您使用的引号有误,这可能会导致问题。
例如,假设您想添加这样的简码:
[contact-form-7 id=”44″ title=”主要联系表”]
短代码已包含双引号。因此,如果您尝试对 do_shortcode 函数使用双引号,您可能会触发错误。
解决方案?只需为 PHP 函数使用单引号。
这是错误的做法——注意短代码是如何用双引号括起来的:
echo do_shortcode(“[contact-form-7 id=”44″ title=”主联系表”]”);
这是正确的方法——注意简码现在是如何用单引号括起来的,而简码中仍然有双引号:
echo do_shortcode(‘[contact-form-7 id=”44″ title=”主联系表”]’);

3. 确认您使用的是正确的简码。

这看起来很明显,但实际上可能有点棘手。一些插件将使用完全相同的短代码语法,但实现方式略有不同,因此它不是真正的 WordPress 短代码。
对你来说,它看起来就像一个短代码,所以你认为它应该在 WordPress do_shortcode 中正常工作。但是对于您的 WordPress 网站,它实际上并不是简码,这就是为什么 do_shortcode 不起作用的原因。

使用 WordPress do_shortcode 有任何风险吗?

当您只有一个简码并且需要某种方法将其添加到模板或 PHP 代码时,WordPress do_shortcode 函数会非常方便。
话虽如此,您通常应该尽可能避免使用它。

你为什么要避免它?

这个问题主要与性能有关。并不是说使用 do_shortcode 会自动减慢您的网站速度。在大多数情况下,这完全没问题,您不会注意到有什么不同。
但是,从性能的角度来看,这并不是最佳技术。因此,如果您可以轻松避免它,最好使用不同的方法(我们将在下面讨论)。
这就是为什么。当您使用 do_shortcode 时,您实际上是在强制您的网站运行您网站上存在的所有短代码,只是为了执行您需要的一个短代码。在技​​术层面上,WordPress 通过在每次调用 do_shortcode 函数时使用一个大的正则表达式来做到这一点。
这包括所有默认的 WordPress 短代码、所有主题的短代码(如果适用)以及您正在使用的插件的所有短代码。
显然,这不如使用 PHP 函数有效。它会使您的网站变慢吗?不,这没什么大不了的。但只要有可能,最好使用不同的方法。
那么,您还有哪些其他选择?让我们来看看一些。

WordPress do_shortcode 替代方案

1. 如果提供,使用 PHP 函数

如今,许多插件都为您提供简码和 PHP 函数作为嵌入选项。当您有这两个选项时,您应该始终选择使用 PHP 函数而不是 WordPress do_shortcode 函数。确实没有增加复杂性,它会提高您网站的性能和效率。

2.找到简码的回调函数。

如果该插件没有为您提供 PHP 函数,但出于性能原因您仍然希望避免使用 WordPress do_shortcode 函数,您仍然有一些其他选择。
然而,这些解决方案可能开始变得有点复杂。如果您不是技术人员,为了简单起见,您可能只想坚持使用 do_shortcode。
这里的想法是,您可以找到简码的回调函数,而不是使用简码和 do_shortcode。这是使用短代码时调用的实际 PHP 函数。
然后您可以回显该函数而不是 do_shortcode。

但是,这样做有两个缺点:

  1. 如果您不是技术人员,要找到回调函数可能会很棘手。
  2. 如果回调在对象类中,这可能真的很棘手。您可能无法直接访问回调,这需要创建自定义回调实用程序,这超出了本文的范围。

很多比较简单的插件,找回调函数并不难。对于此示例,假设您要使用Current Year and Copyright Shortcode plugin 中的简码。

这是执行此操作的最简单方法:

  1. 下载插件并解压缩 zip 文件,以便您可以轻松访问插件的所有文件。
  2. 使用可让您对该文件夹中的所有文件运行搜索的软件。Notepad++ 是一个可靠的免费选项,可以很容易地做到这一点。
  3. 搜索您计划在 WordPress do_shortcode 函数中使用的简码。

你应该看到这样的东西:

add_shortcode( ‘cy’, ‘jr_cy_cy’ );

在这个例子中:

  • [cy] 是简码
  • jr_cy_cy() 是短代码调用的实际函数

使用 do_shortcode,您可以像这样实现它:
echo do_shortcode(‘[cy]’);
但是现在你有了回调函数,你可以像这样直接使用这个函数:
echo jr_cy_cy();
您将获得完全相同的效果,但您已经减少了站点必须完成的工作。

开始使用 WordPress do_shortcode

WordPress 的 do_shortcode 功能可以轻松地将短代码直接包含在主题的模板文件中。您需要做的就是将短代码包含在 do_shortcode 函数中,并在您希望短代码出现的模板位置回显该函数。
您还需要特别注意您使用的引号,因为在使用 do_shortcode 时单引号和双引号之间的区别非常重要。
虽然 do_shortcode 的一个吸引人的地方是它的简单性,但通常最好避免在可能的情况下使用 WordPress do_shortcode,因为它不像直接调用 PHP 函数那样对性能友好。
如果插件为您提供简码和 PHP 函数,最好使用 PHP 函数而不是简码。而且,即使插件不提供 PHP 函数,您也可以轻松找到与短代码关联的回调函数并直接调用该函数。
do_shortcode 通常是在模板文件中使用短代码的最简单方法。因此,如果这是您可以开始工作的唯一方法,请坚持使用 do_shortcode。

Newsletter Updates

Enter your email address below and subscribe to our newsletter

留下评论

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