文本小部件中的WordPress短代码不传递内容

时间:2014-02-21 13:54:36

标签: php wordpress-plugin wordpress

我有一个封闭的小部件,可以在帖子/页面中正常工作,但在文本小部件中,它不会在短代码标签之间传递内容。

短代码如下:

[wpbutton]wpbutton[/wpbutton]

,代码是:

add_shortcode('wpbutton', array($this, 'shortcode'));
add_filter('widget_text', array($this, 'shortcode'));

function shortcode($args, $content = null) {

    extract(shortcode_atts(array(
        'action' => '',
        'classes' => 'wpbutton',
    ), $args));

    echo wpbutton($action, $content, $classes);

    // Added for testing - echos in sidebar!
    if (!$content) {
        echo 'no content';
    }

}

function wpbutton($action, $content, $classes) {
    // Do stuff
}

在帖子/页面内容中,它回显标签之间的任何内容,但在文本小部件中,它回声“没有内容”

任何人都知道如何解决?

1 个答案:

答案 0 :(得分:0)

我认为您应该将过滤功能更改为:

add_filter('widget_text', array($this, 'do_shortcode'));

而不是

add_filter('widget_text', array($this, 'shortcode'));

它将文本小部件的内容传递给Wordpress的do_shortcode()函数,而不是您的函数。 Wordpress功能将自行处理短代码并自动调用shortcode功能。

herehere