我有一个封闭的小部件,可以在帖子/页面中正常工作,但在文本小部件中,它不会在短代码标签之间传递内容。
短代码如下:
[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
}
在帖子/页面内容中,它回显标签之间的任何内容,但在文本小部件中,它回声“没有内容”
任何人都知道如何解决?
答案 0 :(得分:0)
我认为您应该将过滤功能更改为:
add_filter('widget_text', array($this, 'do_shortcode'));
而不是
add_filter('widget_text', array($this, 'shortcode'));
它将文本小部件的内容传递给Wordpress的do_shortcode()
函数,而不是您的函数。 Wordpress功能将自行处理短代码并自动调用shortcode
功能。