the_widget() and widget's ID

时间:2011-03-02 作者:Wordpressor

假设我有一个只显示其名称的小部件:

    <p>
         <?php echo $args[\'widget_id\'] ?>
    </p>
因此,当我拖动(&A);将我的小部件放到它显示的任何侧栏:

<p>
     myWidget-number
</p>
问题是我想用一个短代码调用此小部件:

    (...)
            ob_start();    
            the_widget(MyWidget);
            return ob_get_clean();
   }

    add_shortcode(\'myWidget_short\', \'myWidget_shortcode\');
当我执行[myWidget\\u short]时,它只显示

<p>
</p>
有没有办法用一个短代码来调用widget的ID?

2 个回复
最合适的回答,由SO网友:Wordpressor 整理而成

我相信“一招小马”是对的。

短代码小部件没有ID,所以我找到了解决方法。

首先我使用了PHP rand函数:

$var = rand();
然后将“var”添加到ID中,这样就不会与调用同一小部件的其他短代码发生冲突(每个短代码在ID的末尾都有不同的随机数):

<div id="myWidget-<?php echo $var?>;"></div>

SO网友:Marketing Consultant

我构建了一个用于调用侧栏的短代码和一个用于将小部件调用到Total Widget Control. 侧边栏很容易创建,只需调用dynamic_sidebar ob\\U start()内部;

然而,单个小部件的调用相当复杂。global $wp_registered_widgets 我认为是包含完整小部件实例的全局变量。您需要首先创建自己的函数来获取小部件实例,然后需要调用小部件回调函数来显示小部件。

您尝试使用的代码the_widget 实际上需要将小部件实例作为参数传递。它无法找到小部件本身。

结束