Comment créer une deuxième barre latérale dans le thème Underscores WordPress ?

Publié par Jean-Michel le

J’ai du mal à créer et à afficher une deuxième barre latérale dans le thème WordPress Underscores (_s). J’ai parcouru le Web de bout en bout, mais je n’ai pas vraiment trouvé de solution appropriée (même trouvé un problème similaire ici sur StackOverflow, mais la réponse semble être de créer une barre latérale conditionnelle plutôt qu’une seconde autonome).

Je sais comment créer des barres latérales dans WordPress (même si je n’ai pas encore beaucoup d’expérience), mais cette fois, il semble qu’il me manque quelque chose, car la barre latérale ne s’affiche tout simplement pas sur le site Web. J’apprécierais vraiment que quelqu’un puisse jeter un œil à mon code et m’orienter dans la bonne direction.


Ce sont les étapes que j’ai faites jusqu’à présent avec mon code:

étape 1:

enregistrez une nouvelle barre latérale dans functions.php, donc pour le moment, le code pour les deux ressemble à ceci :

function theme_name_widgets_init() {
    register_sidebar( array(
        'name'          => __( 'Sidebar', 'theme-name' ),
        'id'            => 'sidebar-1',
        'description'   => '',
        'before_widget' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget'  => '</aside>',
        'before_title'  => '<h1 class="widget-title">',
        'after_title'   => '</h1>',
    ) );
    register_sidebar( array(
        'name'          => __( 'Right Navigation', 'theme-name' ),
        'id'            => 'sidebar-2',
        'description'   => '',
        'before_widget' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget'  => '</aside>',
        'before_title'  => '<h1 class="widget-title">',
        'after_title'   => '</h1>',
    ) );
}
add_action( 'widgets_init', 'theme_name_widgets_init' );

Il semble que cette partie ne soit pas le problème, car la nouvelle barre latérale est apparue dans le tableau de bord WordPress et je peux y ajouter des widgets.

étape 2:

créer un sidebar-2.phpfichier avec le code suivant :

<?php
if ( ! is_active_sidebar('sidebar-2') ) {
    return;
}
?>

<nav id="site-navigation" class="main-navigation" role="navigation">
    <?php dynamic_sidebar( 'sidebar-2' ); ?>
</nav><!-- #site-navigation -->

étape 3:

ajoutez ce morceau de code là où je veux que la deuxième barre latérale soit affichée (par exemple dans un fichier index.phpor single.phpetc):

<?php get_sidebar(2); ?>

Des idées sur ce que j’aurais pu faire de mal ou sur ce qui me manque?

Solution n°1 trouvée

<?php dynamic_sidebar( 'sidebar-2' ); ?>

Affichera le contenu de la barre latérale. Avez-vous configuré les barres latérales pour contenir des widgets dans le CMS ?

Cela vaut également la peine de s’assurer que vous utilisez le bon modèle PHP pour afficher la barre latérale.

Solution n°2 trouvée

Comme c’est toujours le cas, il m’est arrivé de trouver ce qui n’allait pas environ une minute après avoir posté cette question (même si auparavant j’y avais réfléchi pendant un bon bout de temps).

C’était une de ces stupides petites erreurs qui cassent tout : j’ai mal nommé le fichier avec la nouvelle barre latérale (sidebar-2.php) (il y avait un espace supplémentaire à la fin). En dehors de cela, il s’avère que le code est correct (puisqu’il affichait correctement la barre latérale juste après avoir renommé le fichier).

Je suis désolé d’avoir pris votre temps, et j’espère que si quelqu’un a besoin de créer une deuxième barre latérale dans Underscores, cela l’aidera à l’avenir 🙂

Solution n°3 trouvée

Vous tombez très probablement dans la condition d’évasion précoce.

is_active_sidebar()renverra FALSE si vous n’avez aucun widget actif dans la barre latérale cible.

A part ça, le code est OK et devrait fonctionner.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *