如何将所有WordPress小部件限制为给定类别?例如,在我的侧边栏上有一个弹出列表框,可以让我选择一个鸟类,并且该侧边栏上的所有小部件数据都会粘贴给定的鸟类。我想我需要使用add_filter()进行某种过滤,但不了解该过程。关于这方面的文档是不完整的。
答案 0 :(得分: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(aka Links)小部件,然后让你正常显示的每个其他小部件。
这解决了我的问题,因为现在我可以重绘这些小部件,但这次是通过类别限制来实现的。据我所知,到目前为止,我可以使用一点WordPress Codex来获取这些小部件显示所需的数据,如果需要可以按类别过滤,然后我甚至可以使用一些例如绘制的东西日历或标签云。