Как Добавить Пользовательский CSS Только К Определенным Виджетам
У меня есть стандартная динамическая боковая панель, использующая register_sidebar
и dynamic_sidebar
, и мне нужен последний виджет на боковой панели (в котором не будет заданного количества виджетов), чтобы добавить отдельный класс ('last_widget'
) к <li>
, который его обертывает. Как лучше всего это сделать?
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;
}
Вы также можете использовать CSS для выбора последнего виджета с помощью:last-child (хотя IE это не понравилось бы) или использовать jQuery для его выбора. Но приведенный выше PHP-код, вероятно, лучший способ сделать это.
Я написал патч, который делает это для основного кода, соответствующий билет #12615 - Добавьте "первые" и "последние" имена CSS-классов к каждому виджету на боковых панелях (интерфейс)
Патч является рабочим решением, есть некоторые внутренние элементы виджета, которые делают использование end() в массиве боковой панели, как предлагает Майк, с его кодом, не работающим должным образом (Да, это было бы слишком просто, верно: P).
Дайте мне знать, если патч больше не будет применяться чистым. У меня есть это работает очень хорошо на сайтах 2.9.2.