【问题标题】:How Do I Restrict All WordPress Widgets To A Given Category?如何将所有 WordPress 小部件限制为给定类别?
【发布时间】:2011-01-21 18:01:54
【问题描述】:

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

【问题讨论】:

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

标签: wordpress widget categories add-filter


【解决方案1】:

我对使用查询过滤器感到非常紧张,因为它对于 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 来获取这些小部件显示所需的数据,如果需要按类别过滤,然后我什至可以使用一些例程来执行诸如绘图之类的操作日历或标签云。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多