在通过多个分类对帖子进行过滤后对其进行排序

时间:2011-08-01 作者:annabwashere

我用的是scribu的Query Multiple Taxonomies 通过多种分类法筛选帖子(这很好!)。

然而,我希望允许人们根据具有数值的自定义字段对结果进行进一步排序(例如。rate_per__private_sessionrate_per_group) 通过单击链接。

我原以为下面这样的东西就是它的全部,但显然不是。

<a href="<?php query_posts($query_string . \'&meta_key=rate_per_private_session\'); ?>">Sort by Rate per Private Session</a> | 
<a href="<?php query_posts($query_string . \'&meta_key=rate_per_group\'); ?>">Sort by Rate per Group</a>
我该怎么做?

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

我想是我自己弄的。代码应为:

<a href="<?php echo add_query_arg( \'order_by\', \'rate_private\' ); ?>">Sort by private</a>
<a href="<?php echo add_query_arg( \'order_by\', \'rate_company\' ); ?>">Sort by company</a>
注意:我使用了另一个插件,Custom Query Fields, 其中提供了“order\\u by”查询变量。

SO网友:Rutwick Gangurde

您可以使用javascript重定向到来传递适当的query\\u参数。为类别下拉小部件签出WP的默认小部件文件。选择新类别时,它会自动刷新页面并将您重定向到该类别的存档。我使用了同样的技巧(或代码!)使用GDStar的查询参数更改要排序的query\\u帖子。

试试这个:

    <a href=\'#\' id=\'sort_by_rate_private\' value>Sort by Rate per Private Session</a>
    <a href=\'#\' id=\'sort_by_rate_group\'>Sort by Rate per Group</a>

<script type=\'text/javascript\'>
jQuery(\'#sort_by_rate_private\').click(function(){
     location.href = "<?php echo home_url(); ?>/?sortby=rate_per_private_session";
} 
jQuery(\'sort_by_rate_group\').click(function(){
     location.href = "<?php echo home_url(); ?>/?sortby=rate_per_group";
} 
</script>
现在获取$\\u POST[\'sortby\']值,并按如下方式进行检查:

<?php
    if(isset($_POST[\'sortby\'] && $_POST[\'sortby\']==\'rate_per_private_session\')
    {
      query_posts($query_string . \'&meta_key=rate_per_private_session\');
    }
    else if(isset($_POST[\'sortby\'] && $_POST[\'sortby\']==\'rate_per_group\')
    {
      query_posts($query_string . \'&meta_key=rate_per_group\');
    }
    else
    {
      //nothing is set, hence default
      //whatever
    } 
?>
只要确保你的url是正确的。还要检查jQuery(据我所知,我已经写了)。试试这个,让我知道!

谢谢Rutwick

结束

相关推荐

Problem with WP_Query sort

我为页面编写了以下自定义查询- $menu_loop = new WP_Query( array( \'post_type\' => \'page\', \'posts_per_page\' => 50, \'post_parent\' => 616, \'order_by\' => \'post_title\', \'order\' => \'ASC\' ) ); while ($menu_loop->have_posts()) : $menu_l