Как Добавить Пользовательский CSS Только К Определенным Виджетам


У меня есть стандартная динамическая боковая панель, использующая register_sidebar и dynamic_sidebar, и мне нужен последний виджет на боковой панели (в котором не будет заданного количества виджетов), чтобы добавить отдельный класс ('last_widget') к <li>, который его обертывает. Как лучше всего это сделать?

Author: John P Bloch, 2010-08-18

3 answers

Привет Джон:

Я думаю, что это то, что вы ищете (я бы объяснил код, если бы я думал, что он не требует пояснений; дайте мне знать, если нет):

<?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
Author: MikeSchinkel, 2010-08-19 15:45:50

Вы также можете использовать CSS для выбора последнего виджета с помощью:last-child (хотя IE это не понравилось бы) или использовать jQuery для его выбора. Но приведенный выше PHP-код, вероятно, лучший способ сделать это.

 0
Author: Shaun, 2010-08-18 22:48:22

Я написал патч, который делает это для основного кода, соответствующий билет #12615 - Добавьте "первые" и "последние" имена CSS-классов к каждому виджету на боковых панелях (интерфейс)

Патч является рабочим решением, есть некоторые внутренние элементы виджета, которые делают использование end() в массиве боковой панели, как предлагает Майк, с его кодом, не работающим должным образом (Да, это было бы слишком просто, верно: P).

Дайте мне знать, если патч больше не будет применяться чистым. У меня есть это работает очень хорошо на сайтах 2.9.2.

 0
Author: hakre, 2010-08-19 06:23:52