web-dev-qa-db-fra.com

duplicate sidebar

J'ai un problème avec une barre latérale. J'ai 4 barres latérales: "Essential", "Essential +", "Premier" et "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'   => ''
    )
);

Je dois rendre "Premier" et "Premier +" dans la même page. Lorsque je fais cela, WordPress rend le même contenu pour les deux pages, comment puis-je résoudre ce problème?
Pourquoi cela arrive-t-il?

2
Rommel Castro A

Essayez de donner un identifiant unique à chaque barre latérale dynamique, via le paramètre id passé à register_sidebar() :

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'   => ''
        )
    );

Et ensuite, appelez chacun par ID:

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

Cependant, vous devriez pouvoir les appeler via name ou ID:

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

... sauf si le "+" est nettoyé du paramètre?

1
Chip Bennett