0

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

4

1 回答 1

0

我对使用查询过滤器感到非常紧张,因为它对于 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 文件的顶部,它将完全隐藏 Meta、Categories 和 Pages 小部件,用全新的内容替换 Blogroll(又名链接)小部件,然后让其他所有您正常显示的小部件。

这解决了我的问题,因为现在我可以重绘这些小部件,但这次使用类别限制。据我目前所知,我可以使用一点 WordPress Codex 来获取这些小部件显示所需的数据,如果需要按类别过滤,然后我什至可以使用一些例程来执行诸如绘图之类的操作日历或标签云。

于 2010-03-01T04:17:49.020 回答