【问题标题】:How to rotate widgets in a sidebar如何在侧边栏中旋转小部件
【发布时间】:2014-07-04 16:22:00
【问题描述】:

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

这是我当前管理中侧边栏的图像:


(来源:illstudios.com

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

【问题讨论】:

    标签: php wordpress widget


    【解决方案1】:

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

    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;
    }
    

    【讨论】:

    • 谢谢!效果很好!起初我以为它只显示第一个小部件,刷新了 5 次,但它确实旋转了!你真棒!不过问题是,你为什么使用if( !is_admin() ) 代码?
    • 否则它会在管理端(/wp-admin/widgets.pp)出错,该函数会检查它是否是后端/前端。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 2014-08-19
    相关资源
    最近更新 更多