如何在左侧栏模板中获取侧栏小部件

时间:2016-12-28 作者:Vinaya Maheshwari

我使用以下代码创建了一个自定义边栏小部件:

register_sidebar(array(
        \'id\' => \'sidebar-widget-1\',
        \'name\' => \'Sidebar Widget 1\',
        \'before_widget\' => \'\',
        \'after_widget\' => \'\',
        \'before_title\' => \'\',
        \'after_title\' => \'\',

    ));
它正在Appearance -> Widgets 它还使用dynamic_sidebar(\'Sidebar Widget 1\').

但我想了解这方面的内容register_sidebar 通过使用id 转换为变量。

如何使用its获取提要栏内容id?

2 个回复
SO网友:Rishabh

在侧边栏中。php或任何其他自定义提要栏文件调用

<?php get_sidebar(\'sidebar-widget-1\'); ?>
不是这样的

<?php get_sidebar(\'Sidebar Widget 1\'); ?>
看到区别了吗,我在get_sidebar() 函数而不是名称。

现在,无论您希望侧边栏出现在前端的什么地方,都可以这样称呼它

<?php get_sidebar(\'sidebar-widget-1\'); ?>

SO网友:iamdavidabayomi

从您的问题中,您已经注册了侧栏。

要将侧栏的内容放入变量中,我认为可以使用php缓冲:

   // ob_start - Turn on output buffering
   // ob_get_contents - Return the contents of the output buffer
   // ob_end_clean - Clean (erase) the output buffer and turn off output buffering
例如:

   // Turn on output buffering
   ob_start();
   // Specify the sidebar using its [id]
   dynamic_sidebar(\'sidebar-widget-1\');
   // Store the return contents of the output buffer in a variable
   // in this case $sidebar_content
   $sidebar_content = ob_get_contents();
   // Clean (erase) the output buffer and turn off output buffering
   ob_end_clean();

如果需要获取多个侧栏内容,例如需要同时获取多个侧栏的内容,则可以:

    // Get the list of all registered sidebars using wp_registered_sidebars
    foreach ( $GLOBALS[\'wp_registered_sidebars\'] as $sidebar ) :
        // Turn on output buffering
        ob_start();
        // This will get all the sidebars
        dynamic_sidebar($sidebar[\'id\']);
        // Store the return contents of the output buffer in a variable
        // in this case $sidebars_content
        $sidebars_content = ob_get_contents();
        // Clean (erase) the output buffer and turn off output buffering
        ob_end_clean();
    endif;

    // Get the global registered sidebars
    global $wp_registered_sidebars;
    // Loop through each content in $wp_registered_sidebars array
    foreach($wp_registered_sidebars as $sidebar_id => $sidebar) :
        ob_start();
        // This will get all the sidebars
        dynamic_sidebar($sidebar[\'id\']);
        // Store the return contents of the output buffer in a variable
        // in this case $sidebars_content
        $sidebars_content = ob_get_contents();
        // Clean (erase) the output buffer and turn off output buffering
        ob_end_clean();
    endforeach;
希望这一点对你有帮助。

相关推荐

My widgets do not save

每次我保存我的小部件并离开页面时,我的小部件都会消失。侧边栏已完全清空,不会保存任何更改。控制台或PHP日志中没有任何错误。如果我将小部件直接复制并保存在数据库中widgets_text, 它们将被显示,但我仍然无法在侧边栏中添加或删除任何内容。这只发生在我的右侧边栏上,左侧边栏工作正常,但它们都以相同的方式注册。这是我注册侧边栏的方式:function my_widgets_init() { register_sidebar( array ( \'name\'