web-dev-qa-db-ja.com

サイドバーを複製する

サイドバーに問題があります。 4つのサイドバーがあります: "Essential"、 "Essential +"、 "Premier"、 "Premier +"です。

register_sidebar(
     array(
         'name'          => __('Essential Plan'),
         'before_widget' => '<ul>',
         'after_widget'  => '</ul>',
         'before_title'  => '',
         'after_title'   => ''
    )
);
register_sidebar(
    array(
         'name'          => __('Premier Plan'),
         'before_widget' => '<ul>',
         'after_widget'  => '</ul>',
         'before_title'  => '',
         'after_title'   => ''
    )
);
register_sidebar(
    array(
         'name'          => __('Essential+ Plan'),
         'before_widget' => '<ul>',
         'after_widget'  => '</ul>',
         'before_title'  => '',
         'after_title'   => ''
    )
);
register_sidebar(
    array(
         'name'          => __('Premier+ Plan'),
         'before_widget' => '<ul>',
         'after_widget'  => '</ul>',
         'before_title'  => '',
         'after_title'   => ''
    )
);

同じページに "Premier"と "Premier +"を表示する必要があります。このときWordPressが両方のページに同じコンテンツを表示するようにした場合、どうすれば解決できますか?
なんでこんなことが起こっているの?

2
Rommel Castro A

register_sidebar()に渡されるidパラメータを介して、一意のIDを各動的サイドバーに付けてみてください。

register_sidebar(
        array(
             'id'            => 'essential',
             'name'          => __('Essential Plan'),
             'before_widget' => '',
             'after_widget'  => '',
             'before_title'  => '',
             'after_title'   => ''
        )
    );

    register_sidebar(
        array(
             'id'            => 'premier',
             'name'          => __('Premier Plan'),
             'before_widget' => '',
             'after_widget'  => '',
             'before_title'  => '',
             'after_title'   => ''
        )
    );

    register_sidebar(
        array(
             'id'            => 'essential-plus',
             'name'          => __('Essential+ Plan'),
             'before_widget' => '',
             'after_widget'  => '',
             'before_title'  => '',
             'after_title'   => ''
        )
    );

    register_sidebar(
        array(
             'id'            => 'premier-plus',
             'name'          => __('Premier+ Plan'),
             'before_widget' => '',
             'after_widget'  => '',
             'before_title'  => '',
             'after_title'   => ''
        )
    );

そして、IDでそれぞれを呼び出します。

dynamic_sidebar( 'essential' );
dynamic_sidebar( 'premier' );
dynamic_sidebar( 'essential-plus' );
dynamic_sidebar( 'premier-plus' );

ただし、nameまたはIDで呼び出すことができます。

dynamic_sidebar( 'Essential Plan' );
dynamic_sidebar( 'Premier Plan' );
dynamic_sidebar( 'Essential+ Plan' );
dynamic_sidebar( 'Premier+ Plan' );

... "+"がパラメータからサニタイズされない限り

1
Chip Bennett