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

时间:2010-08-18 作者:John P Bloch

我有一个标准的动态侧边栏,使用register_sidebardynamic_sidebar 我需要侧栏中的最后一个小部件(它没有设置数量的小部件)具有不同的类(\'last_widget\') 添加到<li> 就这样结束了。最好的方法是什么?

3 个回复
最合适的回答,由SO网友:MikeSchinkel 整理而成

你好John:

我想这就是您想要的(我会解释代码,因为我认为它是不言自明的;如果不是,请告诉我):

<?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;
}

SO网友:Shaun

您还可以使用CSS来选择最后一个小部件,使用:last child(尽管IE不喜欢这样),或者使用jQuery来选择它。但是上面的PHP代码可能是更好的方法。

SO网友:hakre

我为核心代码编写了一个补丁,相关的票证是#12615 - Add "first" and "last" CSS-class-names to each Widget in sidebars (Frontend)

这个patch 是一个可行的解决方案,有一些小部件内部构件使得在边栏数组上使用end(),正如mike所建议的那样,他的代码不能正常工作(是的,那太简单了,对吧:P)。

如果贴片不再清洁,请告诉我。我在2.9.2站点上运行得非常好。

结束

相关推荐