显示自定义微件,作为短码添加到正确的位置

时间:2015-03-24 作者:gniewleone

我已经创建了一个自定义小部件,我想将其作为快捷码添加到页面内容中。

function show_custom_widget() {
    the_widget( \'WP_Custom_Plugin\');
}
add_shortcode(\'custom-widget\', \'show_custom_widget\');
我在帖子内容中使用了我的短代码,如下所示

[custom-widget]
因此,我得到了我的小部件,但它总是显示在帖子内容的顶部,而不是显示在我使用快捷码的地方。如何使我的小部件显示在正确的位置?

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

短代码的输出应该返回,而不是回显。在短代码中回显输出将有您所看到的意外输出。the_widget() 回显导致问题的输出。遗憾的是,没有类似的函数用于返回wdget输出。

幸运的是,您可以使用输出缓冲区来解决此问题。您可以尝试以下操作:(警告:未测试)

function show_custom_widget() {
    ob_start(); 
    the_widget( \'YOUR CUSTOM WIDGET\' ); 
    $contents = ob_get_clean(); 
    return $contents;
}
add_shortcode( \'custom-widget\', \'show_custom_widget\' );

结束

相关推荐

Apply_Filters(‘the_content’,$Content)与DO_ShortCode($Content)

假设我有一个主题选项或自定义的postmeta文本区域。现在我想执行多个短代码、一般文本、图像等。最佳实践是什么?为什么?选项1:$content = //my text area data; echo apply_filters(\'the_content\', $content); 选项2:$content = //my text area data; echo do_shortcode($content); 请告诉我哪一个是最佳实践,以及为什么。EDIT让我详细描