it-swarm.cn

如何将自定义CSS添加到仅某些小部件

我有一个使用register_sidebardynamic_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类名称添加到侧边栏中的每个窗口小部件(前端)

补丁 是一个有效的解决方案,有一些小部件内部使得在侧边栏数组上使用end(),因为mike建议使用他的代码不能正常工作(是的,那太简单了,对吧:P)。

如果贴片不再适用,请告诉我。我在2.9.2网站上运行良好。

0
hakre