it-swarm-ru.tech

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

У меня есть стандартная динамическая боковая панель, использующая register_sidebar и dynamic_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

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

0
Shaun

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

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

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

0
hakre