在WordPress中动态注册窗口小部件区域

时间:2012-10-26 19:14:36

标签: wordpress

我正在尝试允许我的用户设置他们想要使用的小部件区域的数量。我已经设置了一个选项面板,让他们输入数字,然后设置我的小部件注册功能,使用for循环来注册那个小部件区域。这是有效的,除了每次我回到小部件管理区域时,小部件区域都是空的,无论我放入它们。

这是我用来创建小部件区域的代码:

function fivepints_widgets_init() {

    register_sidebar( array(
        'name' => __( 'Main Sidebar', 'fivepints' ),
        'id' => 'sidebar-1',
        'before_widget' => '<div class="widget">',
        'after_widget' => "</div>",
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>',
    ) );

    register_sidebar( array(
        'name' => __( 'Home Sidebar', 'fivepints' ),
        'id' => 'sidebar-2',
        'before_widget' => '<div class="widget">',
        'after_widget' => "</div>",
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>',
    ) );

$fp_theme_options = get_option( 'fp_theme_options'); //get number from options panel

if ($fp_theme_options['fp_sidebars'] == ""){$num = 1;} //set number to 1 if options panel value isn't set
else {$num = $fp_theme_options['fp_sidebars']; }

for ($i=1; $i<=$num; $i++) 
  {
$sidebarName = 'Sidebar ' . $i;
$sidebarID = 'fp-sidebar-' . $i;
    register_sidebar( array(
        'name' => __( $sidebarName, 'fivepints' ),
        'id' => $sidebarID,
        'before_widget' => '<div class="widget">',
        'after_widget' => "</div>",
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>',
    ) );

  }
}
add_action( 'widgets_init', 'fivepints_widgets_init' );

2 个答案:

答案 0 :(得分:0)

我刚注意到,如果我将小部件放在前两个小部件区域(Home或Main)之一并将其他区域留空,则小部件会在重新加载小部件管理时消失。如果我将一个小部件放在其中一个动态生成的区域中,那么管理员就会正常运行。我仍然希望能够将动态生成的区域留空(如果最终用户决定这样做的话)。

答案 1 :(得分:0)

想出来。我不得不使用sidebar-a和sidebar-b作为静态小部件区域的id。