ユーザーが使用できるウィジェット領域の数を設定できるようにしようとしています。数を入力できるようにするオプション パネルをセットアップしてから、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' );