Cómo agregar CSS personalizado solo a ciertos widgets

19 ago 2010, 00:53:47
Vistas: 1.89K
Votos: 6

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?

0
Todas las respuestas a la pregunta 3
0

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;
}
19 ago 2010 01:36:52
0

También podrías usar CSS para seleccionar el último widget usando :last-child (aunque Internet Explorer no lo soportaría), o usar jQuery para seleccionarlo. Pero el código PHP mostrado anteriormente probablemente sea la mejor forma de hacerlo.

19 ago 2010 01:48:22
0

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.

19 ago 2010 09:23:52