web-dev-qa-db-de.com

Problem mit is_active_sidebar?

Ich habe eine Seitenleiste mit folgendem Code registriert:

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

und die sidebar ist registriert, dann habe ich ein paar widgets hinzugefügt. dann habe ich versucht, den bedingten is_active_sidebar zu verwenden, um eine Nachricht anzuzeigen, wenn es keine Widgets wie dieses gibt:

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

es wird jedoch weiterhin die Meldung "Bitte fügen Sie Widgets hinzu" angezeigt, während, wie bereits erwähnt, Widgets hinzugefügt wurden. Wo liegt also das Problem?

Aktualisieren

Zu erwähnen ist, dass es ohne die Bedingung gut funktioniert.

1
Mohamed Omar

Bitte versuchen Sie es mit diesem, denn ohne id wir denke ich nicht, dass das funktionieren wird:

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

und innere Vorlage:

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

Eigentlich ist das Problem gelöst, aber ich weiß nicht, warum das passiert ist. Nachdem ich die Standard-WordPress-Funktion verwendet habe, hat alles gut funktioniert. Dann habe ich mich daran gemacht, die nicht benötigten Argumente zu löschen und wieder nur das Argument name zu verwenden ... und das war der Ausgangspunkt für mich ... nachdem ich alles überprüft hatte, funktionierte alles ... also war es ein Syntaxproblem, aber schließlich kein Problem, nur das Argument name zu verwenden. Jetzt habe ich das und es funktioniert gut:

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

In der Seitenleiste:

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

Ich habe gerade Ihren Code in meine Funktionsdatei eingefügt und auch eine Vorlage zum Testen Ihres Codes erstellt. Für mich funktioniert es gut. Bitte überdenken Sie Ihre Sachen, es könnte funktionieren.

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