Wie man eine spezielle CSS-class in Widget li übergibt

Ich habe eine Sidebar in functions.php zugewiesen:

 register_sidebar( array ( 'name' => 'Footer Widgets Area', 'id' => 'footer_widgets_area', 'description' => 'Assign Maximum 3 widgets into this footer sidebar area.', 'class' => 'my-class', 'before_widget' => '
  • ', 'after_widget' => "
  • ", 'before_title' => '

    ', 'after_title' => '

    ' ) );

    In der Fußzeile möchte ich spezifische CSS-class in den Widget-Container laden, nachdem die Anzahl der Widgets aktiviert wurde. Also habe ich das benutzt:

      $our_sidebar = wp_get_sidebars_widgets(); $widget_counter = count( $our_sidebar['footer_widgets_area'] ); if( $widget_counter == 1 ) { $the_class = ' widen-full'; } elseif( $widget_counter == 2 ){ $the_class = ' widen-duo'; } else { $the_class = ' widen-trio'; } 

    Was meine Fußzeile jetzt lädt, ist:

      

    Bitte beachten Sie, dass mein Problem getriggers ist, wenn ich meine class $the_class in das

  • $the_class kann.

     
  • Ich arbeite zwar viel mit WordPress, habe aber Angst vor Hooks und Filtern, und in den meisten Fällen verstehe ich sie ein wenig. Es wäre meine bessere performance, wenn mir jemand nicht einfach eine Lösung anbieten könnte, sondern den damit verbundenen process ERKLÄREN. Dann wäre es meine zukünftige Errungenschaft.

    PS: Irgendwie hallt die in register_sidebar() definierte class nicht wider. Ich weiß nicht warum.

    Solutions Collecting From Web of "Wie man eine spezielle CSS-class in Widget li übergibt"

     function widget_display_callback( $params ) { global $wp_registered_widgets; global $my_widget_num; // Global a counter array $id = $params[0]['widget_id']; $sidebar_id = $params[0]['id']; /* Set some count for each widgets */ if( !$my_widget_num ) { // If the counter array doesn't exist, create it $my_widget_num = array(); } if( isset( $my_widget_num[ $sidebar_id ] ) ) { // See if the counter array has an entry for this sidebar $my_widget_num[ $sidebar_id ] ++; } else { // If not, create it starting with 1 $my_widget_num[ $sidebar_id ] = 1; } $widget_counter = $my_widget_num[ $sidebar_id ]; if( $widget_counter == 1 ) { $the_class = ' widen-full '; } elseif( $widget_counter == 2 ){ $the_class = ' widen-duo '; } else { $the_class = ' widen-trio '; } if ( !empty( $sidebar_id ) && $sidebar_id == 'footer_widgets_area' && !empty( $the_class ) ) { // add your classes $classe_to_add = ' ' . $the_class . ' '; // make sure you leave a space at the end $classe_to_add = 'class=" ' . $classe_to_add; $params[0]['before_widget'] = str_replace( 'class="', $classe_to_add, $params[0]['before_widget'] ); } return $params; } add_filter( 'dynamic_sidebar_params', 'widget_display_callback', 10 ); 

    Im Grunde müssen Sie den Hook ‘dynamic_sidebar_params’ verwenden, um neue classn in jedes Widget im laufenden Betrieb hinzuzufügen. Ich habe das gleiche oben implementiert, um die Anzahl der Widgets und den Index der Widgets in einer Sidebar zu finden (für Ihren Fall ist es: footer_widgets_area). Versuchen Sie, diesen Code in der Datei function.php der aktiven Themes hinzuzufügen und prüfen Sie, ob dies für Sie funktioniert !!

    Sie müssen die Sidebar-ID in dieser Zeile ersetzen

     if ( !empty( $sidebar_id ) && $sidebar_id == 'footer_widgets_area' && !empty( $the_class ) ) {