it-swarm.dev

Jak mohu přidat vlastní CSS pouze určité widgety

Mám standardní dynamický sidebar pomocí register_sidebar a dynamic_sidebar a potřebuju poslední widget v postranním panelu (který nebude mít nastavený počet widgetů), aby byla do 'last_widget' přidána odlišná třída (<li>). Jaký je nejlepší způsob, jak to udělat?

6
John P Bloch

HiJohn:

Myslím, že to je to, co hledáte (vysvětlil bych kód, myslím, že je to samo-vysvětlující, dejte mi vědět, pokud ne):

<?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

Můžete také použít CSS k výběru posledního widgetu pomocí: last-child (i když to [IE _ by se to nelíbilo), nebo jej vyberte pomocí jQuery. Kód PHP je však pravděpodobně tím nejlepším způsobem.

0
Shaun

Napsal jsem patch, který to dělá pro základní kód, související lístek je # 12615 - Přidat "první" a "poslední" CSS-class-jména do každého widgetu v postranních panelech (Frontend)

patch je pracovní řešení, existují nějaké widgety, které dělají použití end () na sidebar pole, jak to mike navrhne s jeho kódem nefunguje správně (Jo, to by bylo příliš jednoduché, vpravo: P) .

Dejte nám vědět, pokud náplast již není čistá. Mám to dobře běží na 2.9.2 stránkách.

0
hakre