it-swarm-es.com

¿Cómo agrego CSS personalizado a solo ciertos widgets?

Tengo una barra lateral dinámica estándar que usa register_sidebar y dynamic_sidebar y necesito el último widget en la barra lateral (que no tendrá un número determinado de widgets) para tener una clase distinta ('last_widget') agregada al <li> que la envuelve. ¿Cuál es la mejor manera de hacer esto?

6
John P Bloch

HolaJohn:

Creo que esto es lo que estás buscando (explicaría el código, creo que se explica por sí mismo; avísame si no):

<?php
add_filter('dynamic_sidebar_params','my_dynamic_sidebar_params');
function my_dynamic_sidebar_params($params) {
    $sidebar_id = $params[0]['id'];
    $sidebar_widgets = wp_get_sidebars_widgets();
    $last_widget_id = end($sidebar_widgets[$sidebar_id]);
    if ($last_widget_id==$params[0]['widget_id'])
        $params[0]['before_widget'] = str_replace(' class="',' class="last_widget ',$params[0]['before_widget']);
    return $params;
}
6
MikeSchinkel

También puede usar CSS para seleccionar el último widget usando: last-child (aunque IE no le gustaría esto), o use jQuery para seleccionarlo. Pero el PHP código anterior es probablemente la mejor manera de hacerlo.

0
Shaun

Escribí un parche que hace esto para el código principal, el ticket relacionado es # 12615 - Agregar "primero" y "último" nombres de clase CSS a cada Widget en las barras laterales (Frontend)

El patch es una solución de trabajo, hay algunos elementos internos de widgets que hacen que el uso de end () en la matriz de la barra lateral como mike sugiere que su código no funcione correctamente (Sí, hubiera sido demasiado simple, a la derecha: P) .

Déjame saber si el parche ya no se aplica limpio. Tengo esto funcionando muy bien en 2.9.2 sitios.

0
hakre