使用[查询]->[设置]或[生成新查询]?

时间:2012-10-16 作者:Jenny

我正在用meta\\u键过滤器为多个帖子类型编写一个循环。过滤器是访问者的输入。当访问者单击链接(过滤器)时,提交的表单和我得到的过滤器。现在,我应该使用$query->set() 要更改查询参数,还是应该提交新查询?目前,我正在使用此函数从输入中获取参数,并将参数传递给wp\\U查询:

function get_args($args){
$defaults= array( 
   // some standard query args
   )
$args = wp_parse_args ( $args, $defaults );
extract ( $args );
if(!empty($args[\'filter\'])){
   switch ($args[\'type\']){
      case \'top_voted\':
         $args[\'post_type\'] = \'docs\';
         $args[\'meta_key\'] = \'_vote_total\';
         $args[\'order\'] = \'DESC\';
         $args[\'orderby\']=\'meta_value_num\';
       break;
      case \'unanswered_questions\':
         $args[\'post_type] = \'topics\';
         $args[\'blabla\'] = \'blabla;
      break;
      default:
          blabla;
       break;
}
return $args;
}
在模板中,我使用以下内容:

$key = isset( $_POST[\'filter\'] ) ? array_keys($_POST[\'filter\']) : null;
$query_args = get_args(array(\'user_id\'=>$user_id, \'filter\'=$key));
$r = new WP_Query( $query_args);
在上面的示例中,我想每次过滤器更改时都会使用新查询。如果查询->集()或其他过滤器可以提高性能,请帮助我了解如何操作。谢谢

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

如果可以在查询运行之前对其进行更改,那么就这样做,并为数据库保存一些工作。您可以使用query->set() 如果没有,您可以使用posts_where, posts_fields, etc filters. 如果没有更多的信息,很难说这些是否对你最有利。

Edit:

另一个问题,这个加载是什么类型的“页面”?以下是我的猜测:您从wp\\u admin->页面创建了一个“页面”,并可能分配了一个自定义构建page template. 如果是这种情况,您可能无法处理主查询,因为它的任务是加载您创建的“页面”,这意味着您似乎在正确的轨道上创建了新查询。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post