it-swarm.asia

Özel CSS'yi Yalnızca Bazı Pencere Öğelerine Nasıl Eklerim?

register_sidebar ve dynamic_sidebar işlevini kullanan standart bir dinamik kenar çubuğum var ve kenar çubuğundaki (belirli bir takım widget sayısına sahip olmayacak) son widget'a, onu silen 'last_widget' 'a eklenmiş farklı bir sınıfa (<li>) sahip olmalıyım. Bunu yapmanın en iyi yolu nedir?

6
John P Bloch

MerhabaJohn:

Aradığın şeyin bu olduğunu düşünüyorum (kodu açıklardım, açıklayıcı olduğunu düşünüyorum; eğer değilse bana bildirin):

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

Ayrıca, son alt öğeyi seçmek için CSS'yi kullanabilirsiniz: last-child (IE bundan hoşlanmasa da) veya seçmek için jQuery kullanın. Ancak yukarıdaki PHP kodu muhtemelen bunu yapmanın daha iyi bir yoludur.

0
Shaun

Çekirdek kod için bunu yapan bir yama yazdım, ilgili bilet: # 12615 - Yan çubuklardaki her Widget'a "ilk" ve "son" CSS sınıfı adlarını ekle (Frontend)

patch çalışan bir çözümdür, kenar çubuğu dizisinde end () işlevini kullanmasını sağlayan bazı widget'lar vardır, çünkü Mike kodunun düzgün çalışmamasına işaret eder (Evet, bu çok basit olurdu, doğru: P) .

Düzeltme eki artık geçerli değilse bana bildirin. 2.9.2 sitelerinde bu çok iyi çalışıyor.

0
hakre