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

Wordpress do_shortcode work in one widget but not another

我有几个简码我不想在我的小部件中使用。我已将 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";
}

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

使用这个:

// 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 在所有其他 cass 中,开发人员可以手动应用它们,如果需要就需要