Wordpress do_shortcode在一个小部件中工作,但不在另一个小部件中工作

时间:2015-05-27 16:08:10

标签: php wordpress widget shortcode

我有几个短代码,我无法在我的小部件中使用。我已将add_filter('widget_text', 'do_shortcode');添加到functions.php(主题),当我使用默认WP" Text"小部件。但是当我在自己的小部件中尝试使用短代码(我自己开发它们)时,它们不能正常工作,它们会被渲染为常规内容。 我想我已经错过了渲染功能或类似的东西,但是几小时搜索和与WP文本源进行比较并不能让我在任何地方。有什么想法吗?

// Display text
if($instance['text']!="") {
    echo "\n<p class=\"lead\">" . str_replace("\n", "</p><p class=\"lead\">", $instance['text']) . "</p>\n";
}

1 个答案:

答案 0 :(得分:0)

这是一个试探性的答案,如果需要可以更新更多信息:

使用它:

// Display text
        if($instance['text']!="") {
            echo "\n<p class=\"lead\">" . str_replace("\n", "</p><p class=\"lead\">", do_shortcode($instance['text'])) . "</p>\n";
        }

甚至可以应用所有widget_text过滤器:

// Display text
        if($instance['text']!="") {
            echo "\n<p class=\"lead\">" . str_replace("\n", "</p><p class=\"lead\">", apply_filters('widget_text', $instance['text'])) . "</p>\n";
        }

do_shortcodewidget_text过滤器不会自动应用于所有(自定义)窗口小部件,仅适用于某些默认WP窗口小部件,例如Text widget,开发人员可以根据需要手动应用它们。需要