Cómo agregar CSS personalizado solo a ciertos widgets
Tengo una barra lateral dinámica estándar usando register_sidebar
y dynamic_sidebar
y necesito que el último widget en la barra lateral (que no tendrá un número fijo de widgets) tenga una clase distinta ('last_widget'
) agregada al <li>
que lo envuelve. ¿Cuál es la mejor manera de hacer esto?

Hola John:
Creo que esto es lo que estás buscando (explicaría el código pero creo que es autoexplicativo; avísame si no lo es):
<?php
add_filter('dynamic_sidebar_params','my_dynamic_sidebar_params');
function my_dynamic_sidebar_params($params) {
// Obtener el ID de la barra lateral actual
$sidebar_id = $params[0]['id'];
// Obtener todos los widgets de las barras laterales
$sidebar_widgets = wp_get_sidebars_widgets();
// Obtener el último widget de esta barra lateral
$last_widget_id = end($sidebar_widgets[$sidebar_id]);
// Si este widget es el último, añadir clase CSS
if ($last_widget_id==$params[0]['widget_id'])
$params[0]['before_widget'] = str_replace(' class="',' class="last_widget ',$params[0]['before_widget']);
return $params;
}

Escribí un parche que hace esto para el código principal, el ticket relacionado es #12615 - Agregar nombres de clases CSS "first" y "last" a cada Widget en las barras laterales (Frontend)
El parche es una solución funcional, hay algunos elementos internos de los widgets que hacen que usar end() en el array de la barra lateral como sugiere mike con su código no funcione correctamente (Sí, eso habría sido demasiado simple, ¿verdad? :P ).
Házme saber si el parche no se aplica correctamente. Lo tengo funcionando muy bien en sitios con la versión 2.9.2.
