it-swarm-ko.tech

특정 위젯에만 사용자 정의 CSS를 추가하려면 어떻게합니까?

나는 register_sidebardynamic_sidebar를 사용하는 표준 동적 사이드 바를 가지고 있으며 사이드 바에 (위젯의 수를 가지지 않을 것이다) 뚜껑이있는 'last_widget'에 뚜렷한 클래스 (<li>)가 추가되도록 마지막 위젯이 필요하다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

6
John P Bloch

안녕 :

나는 이것이 당신이 찾고있는 것이라고 생각한다. (코드를 설명하는 것이 자명하다라고 설명한다. 그렇지 않다면 나에게 알린다) :

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

Last-child (비록 IE이 마음에 들지 않지만)를 사용하여 CSS를 사용하여 마지막 위젯을 선택하거나 jQuery를 사용하여 선택할 수 있습니다. 그러나 PHP code가 아마 더 좋은 방법 일 것입니다.

0
Shaun

관련 코드는 # 12615 - 사이드 바 (Frontend)의 각 위젯에 "첫 번째"와 "마지막"CSS 클래스 이름 추가

패치 는 작동 해결책이며, 사이드 바 배열에서 end ()를 사용하는 일부 위젯 내부 구조가 있습니다. 마이크가 코드가 제대로 작동하지 않을 때 제안합니다. (예, 너무 간단했을 것입니다, 맞습니다 : P).

패치가 더 이상 깨끗하지 않으면 알려주십시오. 나는 2.9.2 사이트에서 잘 돌아가고있다.

0
hakre