如何在侧边栏中旋转小部件

时间:2014-05-16 01:55:47

标签: php wordpress widget

我正在创建一个自定义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

引用一个和精选视频是我创建的自定义小部件。那么有没有办法只从选择中选择一个随机窗口小部件,一次只显示一个窗口小部件?

1 个答案:

答案 0 :(得分: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;
}