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

最初の 2 つのウィジェット領域 (ホームまたはメイン) のいずれかにウィジェットを配置し、他の領域を空のままにしておくと、ウィジェット管理者がリロードされるとウィジェットが消えることに気付きました。動的に生成された領域の 1 つにウィジェットを配置すると、管理者は通常どおりに動作します。動的に生成された領域を空のままにしておくことができるようにしたいと思います (エンド ユーザーがそうすることにした場合)。

于 2012-10-26T19:21:43.093 に答える
0

理解した。静的ウィジェット領域の ID には sidebar-a と sidebar-b を使用する必要がありました。

于 2012-10-26T21:34:28.040 に答える