it-swarm-vi.tech

Làm cách nào để thêm CSS tùy chỉnh vào chỉ một số tiện ích nhất định

Tôi có một thanh bên động tiêu chuẩn bằng cách sử dụng register_sidebardynamic_sidebar và tôi cần tiện ích cuối cùng trong thanh bên (sẽ không có số lượng tiện ích được đặt) để có một lớp riêng biệt ('last_widget') được thêm vào <li> bao bọc nó. Cách tốt nhất để làm điều này là gì?

6
John P Bloch

Xin chào John :

Tôi nghĩ rằng đây là những gì bạn đang tìm kiếm (Tôi sẽ giải thích mã là tôi nghĩ nó tự giải thích; hãy cho tôi biết nếu không):

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

Bạn cũng có thể sử dụng CSS để chọn tiện ích cuối cùng bằng cách sử dụng: con cuối cùng (mặc dù IE sẽ không thích điều này) hoặc sử dụng jQuery để chọn nó. Nhưng mã PHP ở trên có lẽ là cách tốt hơn để làm điều đó.

0
Shaun

Tôi đã viết một bản vá thực hiện điều này cho mã lõi, vé liên quan là # 12615 - Thêm tên lớp CSS "đầu tiên" và "cuối cùng" vào mỗi Widget trong sidebars (Frontend)

Bản vá là một giải pháp hoạt động, có một số phần bên trong tiện ích sử dụng end () trên mảng thanh bên như mike gợi ý rằng mã của anh ta không hoạt động đúng (Vâng, điều đó sẽ quá đơn giản, phải: P).

Hãy cho tôi biết nếu bản vá không áp dụng sạch nữa. Tôi có điều này chạy rất tốt trên các trang web 2.9.2.

0
hakre