it-swarm-id.com

Bagaimana Cara Menambahkan CSS Khusus ke Hanya Widget Tertentu

Saya memiliki sidebar dinamis standar menggunakan register_sidebar dan dynamic_sidebar dan saya memerlukan widget terakhir di sidebar (yang tidak memiliki jumlah widget) untuk memiliki kelas yang berbeda ('last_widget') ditambahkan ke <li> yang membungkusnya. Apa cara terbaik untuk melakukan ini?

6
John P Bloch

Hai John :

Saya pikir ini adalah apa yang Anda cari (saya akan menjelaskan kode saya pikir itu cukup jelas; beri tahu saya jika tidak):

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

Anda juga dapat menggunakan CSS untuk memilih widget terakhir menggunakan: last-child (walaupun IE tidak akan menyukai ini), atau menggunakan jQuery untuk memilihnya. Tetapi kode PHP di atas mungkin merupakan cara yang lebih baik untuk melakukannya.

0
Shaun

Saya menulis tambalan yang melakukan ini untuk kode inti, tiket terkait adalah # 12615 - Tambahkan "pertama" dan "terakhir" nama kelas CSS ke setiap Widget di sidebars (Frontend)

Patch adalah solusi yang berfungsi, ada beberapa widget internal yang menggunakan end () pada array sidebar seperti yang disarankan mike dengan kodenya yang tidak berfungsi dengan baik (Ya, itu terlalu sederhana, kan: P).

Beri tahu saya jika tambalan tidak berlaku lagi. Saya menjalankan ini dengan sangat baik di situs 2.9.2.

0
hakre