如何将所有WordPress小部件限制为给定的类别?

如何将所有WordPress小部件限制为给定的类别?,wordpress,widget,categories,add-filter,Wordpress,Widget,Categories,Add Filter,如何将所有WordPress小部件限制为给定的类别?例如,在我的侧边栏上有一个弹出列表框,让我选择一个鸟类类别,并且侧边栏上的所有小部件数据都与给定的鸟类类别保持一致。我想我需要一种带有add_filter()的过滤器,但我不了解这个过程。这上面的文档是不完整的。我对使用查询过滤器感到非常紧张,因为它对WordPress的SQL API来说太原生了,因此有可能在WordPress的未来版本中被破坏——特别是在这个StackOverflow答案出现的时候,WordPress 3.0版本很快就会发布

如何将所有WordPress小部件限制为给定的类别?例如,在我的侧边栏上有一个弹出列表框,让我选择一个鸟类类别,并且侧边栏上的所有小部件数据都与给定的鸟类类别保持一致。我想我需要一种带有add_filter()的过滤器,但我不了解这个过程。这上面的文档是不完整的。

我对使用查询过滤器感到非常紧张,因为它对WordPress的SQL API来说太原生了,因此有可能在WordPress的未来版本中被破坏——特别是在这个StackOverflow答案出现的时候,WordPress 3.0版本很快就会发布,并且可能会引入一些戏剧性的变化

修复的重点是完全替换小部件内容。下面是一个例子:

<?php 
add_filter('dynamic_sidebar_params','filterWidget');
function filterWidget($args) {
  switch($args[0]['widget_name']) {
    case 'Meta':
    case 'Categories':
    case 'Pages':
      return 0; //hide widget output
      break;
    case 'Links':
      //display new widget replacement output
      echo '<li class="widget"><h2 class="widgettitle">Links</h2>Hello world</li>';
      return 0; //hide previous widget output
      break;
    default:
      //echo "<br /><br />";
      //print_r($args);
      //echo "<br /><br />";
      return $args;
  } //end switch
}

我在sidebar.php中发现,我可以使用add_filter('query','myQueryCallback')调用回调函数并操作小部件使用的查询。这看起来是在类别中映射的唯一方法,但很难,因为它需要了解如何针对帖子、评论、链接等对类别进行术语和分类联接。