【问题标题】:Wordpress shortcode is not called不调用 Wordpress 简码
【发布时间】:2014-09-19 11:51:23
【问题描述】:

好的,我已经创建了一个插件,现在想为应用提供简码。
这是我在wp-content/plugins/my-plugin/my-plugin.php中唯一的文件

<?php
/**
 * Plugin Name: Latest Issue
 * Author: Max Tsepkov
 * Author URI: http://www.yogi.pw
 */

add_action('init', function() {
    add_shortcode('my-plugin', function() {
        // ... my code

        return 'string';
    });
});

我知道插件已激活并调用了init 的回调。
但简码函数永远不会被调用。
我将文本 [my-plugin] 添加到小部件,它也没有被替换。

我做错了什么?如何正确注册简码?

【问题讨论】:

  • 你有哪个版本的PHP?
  • 你看过codex中的Shortcode API了吗?此外,默认情况下,文本小部件不支持短代码

标签: wordpress shortcode


【解决方案1】:

我猜你的 PHP 至少是 5.3,所以你可以让它在一个小部件中工作,你需要添加这个代码。

add_filter('widget_text', 'do_shortcode');

我测试了你的代码,它可以工作。

【讨论】:

  • 我可以把这行放在插件里吗?我暂时修补了主题。
【解决方案2】:

事实证明,某些主题无法解析小部件中的短代码。
我们可以显式挂钩主题过滤器并让它在小部件中运行短代码。
详情见https://wordpress.org/support/topic/how-to-make-shortcodes-work-in-a-widget

并且不需要挂钩到 init 操作。此代码有效:

<?php
/**
 * Plugin Name: Latest Issue
 * Author: Max Tsepkov
 * Author URI: http://www.yogi.pw
 */

// Allow theme to parse shortcodes in widgets
add_filter('widget_text', 'do_shortcode');

add_shortcode('my-plugin', function() {
    // ... my code

    return 'string';
});

【讨论】:

    猜你喜欢
    • 2019-07-13
    • 2014-11-22
    • 1970-01-01
    • 2014-01-11
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多