johnpbloch
  • 0
Гуру

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

  • 0

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

Share
  1. Привет Джон :

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

    <?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;
    }
    
    • 0
  2. Вы также можете использовать CSS для выбора последнего виджета с помощью :last-child (хотя IE это не понравится) или использовать jQuery для его выбора. Но код PHP выше, вероятно, лучший способ сделать это.

    • 0
  3. Я написал патч, который делает это для основного кода, соответствующий билет # 12615 — добавьте «первое» и «последнее» имена классов CSS для каждого виджета на боковых панелях (внешний интерфейс)

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

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

    • 0

Оставить ответ

You must login to add an answer.