0

我试图让我的用户设置他们想要使用的小部件区域的数量。我设置了一个选项面板,让他们输入数字,然后设置我的小部件注册功能以使用 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' );
4

2 回答 2

0

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

于 2012-10-26T19:21:43.093 回答
0

弄清楚了。我必须使用 sidebar-a 和 sidebar-b 作为静态小部件区域的 id。

于 2012-10-26T21:34:28.040 回答