从默认工具栏类中排除特定的小部件

时间:2011-11-30 作者:Iterate

我有两个侧边栏使用register_sidebars 将每个小部件显示为一个列表项的函数,该列表项的类为.box:

<?php if(function_exists(\'register_sidebars\')){

register_sidebars(2, array(
    \'name\'=>\'sidebar%d\',
    \'id\'  =>\'sidebar\',
    \'before_widget\'=>\'<li class="box">\',
    \'after_widget\'=>\'</li><!--box--><!--aside-->\',
    \'before_title\'=>\'<h2>\',
    \'after_title\'=>\'</h2>\',
));
}
?>
因此,输出如下:

<div class="side">
 <ul>
  <li class="box">
   <div class="textwidget">Lorem ipsum</div>
  </li><!--box--><!--aside-->
  <li class="box">
   <h2>Blogroll</h2>
   <ul class="xoxo blogroll">
   <li><a href="http://example.com">Example</a></li>
   </ul>
  </li><!--box--><!--aside-->
 </ul>
</div>
我需要的是一个条件函数,以便任何链接小部件(或具有.xoxo) 在侧边栏中不会得到.box 因为我想以不同的方式来设计这些样式,而且我可以从内部简单地更改某些样式.box. 主要的问题是,我不知道过滤器的目标函数或变量是什么。codex没有很好地对使用较少的全局变量进行分类,我在过滤器引用中看不到任何有帮助的内容。

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

我用过滤器将自己的答案编码在一起dynamic_sidebar_params:

<?php

add_filter(\'dynamic_sidebar_params\',\'io_blogroll_class\');

function io_blogroll_class($params){
 $params[0][\'before_widget\'] =  \'<li class="\'.$params[0][\'widget_name\'].\' box">\';
 $params[0][\'after_widget\'] =  \'</li><!--\'.$params[0][\'widget_name\'].\'-->\';

    if ($params[0][\'widget_name\'] == "Links"){
$params[0][\'before_widget\'] =  \'<li class="\'.$params[0][\'widget_name\'].\'">\';
 $params[0][\'after_widget\'] =  \'</li><!--\'.$params[0][\'widget_name\'].\'-->\';
}   
return $params;
}

?>
第一行实际上覆盖了您编程的任何内容register_sidebar()register_sidebars()在小部件前后放置。这样你就可以安全地在register_sidebar() 如果您正在使用此代码。函数的第一行使小部件的名称(因此是类型)成为列表项的一个类,并给出一个默认类.box 到所有小部件。这个if 语句基本上是这样说的,“如果任何小部件都有类.Links (如果他们是blogroll或linklist,他们会这样做)更改这些小部件前后的XHTML列表项标记,以使用其小部件名称作为唯一的类。“”

我希望这段代码能帮助一些关注同样问题的人。

SO网友:Joshua Abenazer

实际上,您可以使用jQuery来尝试。

jQuery(\'.xoxo\').parent().removeClass(\'box\');

结束

相关推荐

Sidebar上5位不同作者的最新5篇帖子摘录

我试图在我的博客侧栏中显示来自5位不同作者的最新5篇文章摘录。下面是我使用的代码,我从这个线程中调整了它:Find most recent authors到目前为止,我已经让它发挥了作用,但它并没有显示每个作者的最新帖子,而是显示了作者最早的帖子。你知道我做错了什么吗?我已经为此挣扎了几天了,所以非常感谢你能给我任何指导。我是PHP的新手,但能理解足够多的代码。谢谢您可以看到它在我的网站上工作:wearestd.com<?php global $wpdb; $post_ID