web-dev-qa-db-fra.com

Problème avec is_active_sidebar?

J'ai enregistré une barre latérale avec le code suivant:

function reg_l_sid(){
     $args = array(
     'name'          => __( 'left-sidebar', 'Tutorial-Blog' ),
     'id'            => 'left-sidebar',
     'description'   => '',
     'class'         => '',
     'before_widget' => '<li id="%1$s" class="widget %2$s">',
     'after_widget'  => '</li>',
     'before_title'  => '<h2 class="widgettitle">',
     'after_title'   => '</h2>' );

register_sidebar( $args );
}
add_action ('widgets_init','reg_l_sid');

et la barre latérale est enregistrée, alors j'ai ajouté quelques widgets. alors j'ai essayé d'utiliser le is_active_sidebar conditionnel pour afficher un message s'il n'y a pas de widgets comme celui-ci:

if ( is_active_sidebar( 'left-sidebar' ) ) {
     dynamic_sidebar( 'left-sidebar' );
} else {
    echo 'Please add widgets';
}

mais il continue d'afficher le message "S'il vous plaît ajouter des widgets", alors que j'ai mentionné qu'il y avait des widgets ont été ajoutés. Alors, où est le problème?

Mettre à jour

Pour être mentionné que cela fonctionne très bien sans le conditionnel.

1
Mohamed Omar

S'il vous plaît essayer celui-ci, car sans identifiant nous je ne pense pas que cela fonctionnera

  function reg_l_sid()
  {
   $args = array( 'id' => 'sidebar-footer-6','name'=> 'Left-sidebar');
   register_sidebar($args);
  }
  add_action('widgets_init', 'reg_l_sid');

et à l'intérieur du gabarit:

  if (is_active_sidebar('sidebar-footer-6')) {
        dynamic_sidebar('sidebar-footer-6');
   } else {
        echo 'Please add widgets';
   }
3
Sonali

En fait, le problème a été résolu, mais je ne sais pas pourquoi. Ceci a donc fonctionné correctement. Après avoir utilisé la fonction par défaut de WordPress, tout a bien fonctionné. ... et c’était le point de départ pour moi ... après avoir vérifié que tout fonctionnait bien ... c’était donc un problème de syntaxe mais finalement aucun problème avec l’utilisation de l’argument name uniquement. Maintenant, j'ai ceci et ça fonctionne très bien:

function reg_l_sid(){
   $args = array('name'=> __( 'Left-sidebar', 'Tutorial-Blog' ));
   register_sidebar( $args );
}
add_action ('widgets_init','reg_l_sid')

Dans l'encadré:

if ( is_active_sidebar( 'Left-sidebar' ) ) {
     dynamic_sidebar( 'Left-sidebar' );
} else {
    echo 'Please add widgets';
}
1
Mohamed Omar

Je viens de mettre votre code dans mon fichier de fonction et de créer un modèle pour tester votre code. pour moi, ça marche bien. S'il vous plaît ré-évaluer vos choses, cela pourrait fonctionner.

add_action( 'widgets_init', 'twentyseventeen_widgets_init' );
function reg_l_sid(){
     $args = array(
     'name'          => __( 'left-sidebar', 'Tutorial-Blog' ),
     'id'            => 'left-sidebar',
     'description'   => '',
     'class'         => '',
     'before_widget' => '<li id="%1$s" class="widget %2$s">',
     'after_widget'  => '</li>',
     'before_title'  => '<h2 class="widgettitle">',
     'after_title'   => '</h2>' );

register_sidebar( $args );
}

add_action ('widgets_init','reg_l_sid');

if ( is_active_sidebar( 'left-sidebar' ) ) {
     dynamic_sidebar( 'left-sidebar' );
} else {
    echo 'Please add widgets';
}
0
lalitpendhare