2014-05-16 38 views
2

我正在创建一个自定义WordPress模板,其中包含4个“侧边栏”一个用于标题,一个用于左右列的单独边栏,然后是另一个用于页脚的侧栏,所有这些都很好并正常工作。但是,使用我的模板,标题边栏一次只能容纳一个小部件,所以我想知道是否有一种方法可以将多个小部件添加到边栏中,但以某种方式操纵代码只显示一个随机(甚至在某些特定顺序)小部件,这将在每个新页面上重新加载。如何在侧边栏中旋转小部件

代码我用来做边栏:

if (function_exists('register_sidebar')) { 
    register_sidebar(array(
     'name' => 'Header Sidebar Widgets', 
     'id' => 'sidebar-widgets-header', 
     'description' => 'The Header Can Only Support One (1) Widget.', 
     'before_widget' => '<div id="%1$s" class="widget %2$s">', 
     'after_widget' => '</div>', 
     'before_title' => '<h2>', 
     'after_title' => '</h2>' 
    )); 
} 

然后代码我用侧边栏添加到我的模板:

if (!function_exists('dynamic_sidebar') || !dynamic_sidebar('sidebar-widgets-header')) : 
endif; 

这里是侧边栏的形象我的管理范围内目前:

Sample http://illstudios.com/widget.jpg

报价One和壮举ured视频是我创建的自定义小部件。那么是否有办法从选择中只选择一个随机小部件,并且一次仅显示一个小部件?

回答

2

有一个过滤器可以返回所有侧边栏中的所有小部件。我们可以用它来洗牌和修剪其中一个侧边栏:

if(!is_admin()) 
{ 
    add_filter('sidebars_widgets', 'sidebar_so_23691473'); 
} 

function sidebar_so_23691473($sidebars_widgets) 
{ 
    shuffle($sidebars_widgets['sidebar-widgets-header']); 
    $only_one = array_slice($sidebars_widgets['sidebar-widgets-header'] , -1); 
    $sidebars_widgets['sidebar-widgets-header'] = $only_one; 
    return $sidebars_widgets; 
} 
+0

谢谢!这工作完美!起初我以为它只显示第一个部件,刷新了5次,但它旋转!你真棒!问题是,为什么你使用'if(!is_admin())'代码? –

+0

否则它错误的管理端('/ wp-admin/widgets.pp'),函数检查它是否是后端/前端。 – brasofilo