我需要对侧边栏中的每一个小部件应用某种样式,由于跨浏览器兼容性问题,我不愿意使用:nth child。是否有一些PHP允许我将一个类应用于每个其他小部件?
Style every second widget?
3 个回复
最合适的回答,由SO网友:Chris Carson 整理而成
使用dynamic_sidebar_params
滤器下面的代码添加了一些类来说明小部件是奇数还是偶数、它在侧栏中的索引以及它在侧栏中的位置。
Note: 这个str_replace("class=\\"", "class=\\"$class ", $before_widget);
下面的代码取决于您的before_widget
使用双引号——可能还应该使用正则表达式来处理单引号。我只是还没来得及做这件事。
function my_filter_dynamic_sidebar_params($params){
static $sidebar_widget_count = array();
$sidebar_id = $params[0]["id"];
if (! isset($sidebar_widget_count[$sidebar_id])){
$sidebar_widget_count[$sidebar_id] = 0;
}
$before_widget = $params[0][\'before_widget\'];
$class = $sidebar_widget_count[$sidebar_id] % 2 ?
"widget-odd" : "widget-even";
$class .= " widget-index-" . $sidebar_widget_count[$sidebar_id];
$class .= " widget-in-$sidebar_id";
$before_widget = str_replace("class=\\"",
"class=\\"$class ", $before_widget);
$params[0][\'before_widget\'] = $before_widget;
$sidebar_widget_count[$sidebar_id]++;
return $params;
}
add_filter("dynamic_sidebar_params", "my_filter_dynamic_sidebar_params");
SO网友:Chip Bennett
这可能是一个使用CSS的好地方:nth-child
伪类,尤其是:nth-child(odd)
和:nth-child(even)
. 我不会太担心浏览器的兼容性。如果必须的话,只需对IE8使用jQuery即可。
SO网友:hfz
这里有一个关于WordPress的相关讨论。组织论坛:http://wordpress.org/support/topic/dynamic-widget-classes-for-use-in-css
结束