WordPress.org

Make WordPress Core

Ticket #12615: garyc40.12615.diff

File garyc40.12615.diff, 1.1 KB (added by garyc40, 3 years ago)

try to do less than hackre's patch, just in case

  • wp-includes/widgets.php

    diff --git wp-includes/widgets.php wp-includes/widgets.php
    index 4c6d4f4..d5cc94b 100644
    function dynamic_sidebar($index = 1) { 
    861861        $sidebar = $wp_registered_sidebars[$index]; 
    862862 
    863863        $did_one = false; 
    864         foreach ( (array) $sidebars_widgets[$index] as $id ) { 
     864        $widgets = (array) $sidebars_widgets[$index]; 
     865        $i = 0; 
     866        $count = count( $widgets ); 
     867        foreach ( $widgets as $id ) { 
    865868 
    866869                if ( !isset($wp_registered_widgets[$id]) ) continue; 
    867870 
     871                $i ++; 
     872                 
    868873                $params = array_merge( 
    869874                        array( array_merge( $sidebar, array('widget_id' => $id, 'widget_name' => $wp_registered_widgets[$id]['name']) ) ), 
    870875                        (array) $wp_registered_widgets[$id]['params'] 
    function dynamic_sidebar($index = 1) { 
    879884                                $classname_ .= '_' . get_class($cn); 
    880885                } 
    881886                $classname_ = ltrim($classname_, '_'); 
     887                 
     888                if ($i == 1) 
     889                        $classname_ .= ' first'; 
     890                elseif ( $i == count( $widgets ) ) 
     891                        $classname_ .= ' last'; 
     892                 
    882893                $params[0]['before_widget'] = sprintf($params[0]['before_widget'], $id, $classname_); 
    883894 
    884895                $params = apply_filters( 'dynamic_sidebar_params', $params );