首页 > CMS教程 > &#&按 > 快速提示:如何在WordPress中的小部件中使用短代码

快速提示:如何在WordPress中的小部件中使用短代码

Lisa Kudrow
发布: 2025-02-10 15:07:09
原创
503 人浏览过

在WordPress中,默认情况下,短代码只能在文章和页面中使用,不能在小部件中使用。但是,可以使用widget_text过滤器和do_shortcode()函数来启用此功能,从而允许“文本”小部件解析任何现有的短代码。

Quick Tip: How to Use Shortcodes Within Widgets in WordPress

在“文本”小部件中允许使用短代码

WordPress默认提供多个小部件。“文本”小部件允许您向小部件添加任何文本,也可以添加任何HTML代码。这意味着您也可以在此小部件中使用JavaScript代码,因此它非常强大。但是,如果您需要更多功能,例如访问服务器中存储的一些数据的PHP脚本,则默认情况下此小部件无法帮助您。

它类似于文章。这就是为什么,像在文章中一样,我们希望能够使用短代码来做任何我们想做的事情。为此,我们可以使用widget_text过滤器。此过滤器用于允许修改“文本”小部件的内容。我们将在这里使用它来要求WordPress在此小部件中解析短代码。

WordPress中短代码的解析是通过do_shortcode()函数实现的。它接受一个必需的参数,即要解析的文本,并返回已解析的文本。这意味着我们可以直接将此函数用作widget_text过滤器的回调函数。

以下代码可用于插件文件或主题的functions.php文件中:

<?php add_filter('widget_text', 'do_shortcode'); ?>
登录后复制
登录后复制

现在,您在“文本”小部件中键入的任何现有短代码都将被解析。

Quick Tip: How to Use Shortcodes Within Widgets in WordPress

创建新的短代码小部件

或者,我们也可以创建我们自己的小部件。由于默认的“文本”小部件运行良好,我们可以简单地从以下代码(位于/wp-includes/default-widgets.php文件中)调整其代码。值得注意的是,我们应该创建我们自己的插件,绝不修改核心WordPress文件。

<?php class WP_Widget_Text extends WP_Widget {

    public function __construct() {
        $widget_ops = array('classname' => 'widget_text', 'description' => __('Arbitrary text or HTML.'));
        $control_ops = array('width' => 400, 'height' => 350);
        parent::__construct('text', __('Text'), $widget_ops, $control_ops);
    }

    // ... (其余代码与原文相同) ...
}
?>
登录后复制
登录后复制

我们需要更改的内容不多。首先要更改的是类的名称。我选择将其命名为WP_Widget_Shortcodes,但您可以随意选择任何名称。由于此类的构造函数设置了有关小部件本身的一些信息,因此我们还需要修改它。

<?php public function __construct() {
    $widget_ops = array('classname' => 'widget_shortcodes', 'description' => __('Arbitrary text or HTML with shortcodes.'));
    $control_ops = array('width' => 400, 'height' => 350);
    parent::__construct('shortcodes', __('Shortcodes'), $widget_ops, $control_ops);
}
?>
登录后复制

另一个需要更改的地方是在widget()方法中,它描述了WordPress如何显示小部件。我们更改包含要显示的文本的$text变量的内容。我们删除对widget_text过滤器的调用,并将do_shortcode()函数应用于此内容。

<?php add_filter('widget_text', 'do_shortcode'); ?>
登录后复制
登录后复制

然后,我们需要注册我们的widget,以便能够像任何其他widget一样添加它。这可以通过widgets_init操作来实现,该操作一旦WordPress注册了默认widget就会触发。

<?php class WP_Widget_Text extends WP_Widget {

    public function __construct() {
        $widget_ops = array('classname' => 'widget_text', 'description' => __('Arbitrary text or HTML.'));
        $control_ops = array('width' => 400, 'height' => 350);
        parent::__construct('text', __('Text'), $widget_ops, $control_ops);
    }

    // ... (其余代码与原文相同) ...
}
?>
登录后复制
登录后复制

现在,您可以在可用小部件列表中找到我们的widget。您可以将其添加到任何兼容区域,它将解释您使用的任何短代码。

Quick Tip: How to Use Shortcodes Within Widgets in WordPress

结束语

如上所述,启用在小部件中使用短代码并不复杂,但您需要注意。事实上,并非每个短代码都适合显示小部件的位置。如果短代码具有固定宽度,那可能是个问题。

请注意,我们在默认“文本”小部件中使用的更改是最小的。如果您想自定义小部件,可以更改任何其他内容。

(以下为原文FAQ部分的伪原创,保持内容一致性的同时调整了表达方式)

关于在WordPress小部件中使用短代码的常见问题

  • 在WordPress小部件中使用短代码的目的是什么?

在WordPress小部件中使用短代码,可以添加特定功能而无需编写代码,它们是复杂函数的快捷方式。例如,您可以使用短代码嵌入文件、创建对象或将特定内容插入到文章或页面中。通过在小部件中使用短代码,您可以将这些功能扩展到网站的侧边栏或其他小部件区域,从而增强用户体验。

  • 如何将短代码添加到WordPress小部件?

要将短代码添加到WordPress小部件,请在WordPress仪表板中导航到“外观”下的“小部件”部分。将“文本”小部件拖放到所需的小部件区域。在小部件的文本字段中,输入用方括号[]括起来的短代码。单击“保存”以应用更改。

  • 为什么我的短代码在小部件中不起作用?

如果您的短代码在小部件中不起作用,可能是由于以下几个原因:短代码可能不正确,或者提供短代码的插件可能已停用。确保短代码正确且必要的插件处于活动状态。如果问题仍然存在,则可能与其他插件或主题存在冲突。尝试停用其他插件或切换到默认主题以排除故障。

  • 我可以在单个小部件中使用多个短代码吗?

是的,您可以在单个小部件中使用多个短代码。只需确保每个短代码都用方括号括起来,并且不同短代码之间留有空格。

  • 如何为小部件创建我自己的短代码?

要为小部件创建您自己的短代码,您需要在主题的functions.php文件中添加一个自定义函数。此函数应定义短代码的功能。定义函数后,您可以使用add_shortcode()函数创建新的短代码。

  • 我可以在所有类型的小部件中使用短代码吗?

可以在接受文本输入的任何小部件中使用短代码。这包括“文本”小部件、“自定义HTML”小部件和其他小部件。但是,并非所有小部件都支持短代码。

  • WordPress中的do_shortcode函数是什么?

WordPress中的do_shortcode函数用于搜索内容中的短代码,并通过其钩子过滤短代码。它实际上允许您在文章编辑器之外使用短代码,例如在小部件或主题文件中。

  • 我可以在WordPress页面构建器中使用短代码吗?

是的,大多数WordPress页面构建器都支持使用短代码。您可以像添加到常规小部件一样,将短代码添加到页面构建器模块或小部件中。

  • 如何查找我的WordPress网站的可用短代码?

WordPress网站的可用短代码取决于您安装的插件和主题。某些插件和主题在其文档中提供了可用短代码的列表。您还可以通过搜索插件或主题文件中的add_shortcode函数来查找短代码。

  • 我可以在WordPress文章和页面中使用短代码吗?

是的,短代码可以在WordPress文章和页面中使用。就像在小部件中一样,您可以通过在文章编辑器中将其用方括号括起来,将短代码添加到文章或页面中。

以上是快速提示:如何在WordPress中的小部件中使用短代码的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板