2010-01-22 143 views
0

我试图设置一个搜索结果页面有两列。第一列将显示除一个(Galleries)以外的所有类别的结果,第二列将仅显示Galleries类别。用Wordpress过滤搜索结果

query_posts()只是重置我的结果。这是我到目前为止。破:

 <?php 
      $s = get_query_var('s'); 
      query_posts('s=' . $s . '&cat=164'); 
     ?> 

     <?php 
      // First Loop 
     ?> 
     <div class="contentLeft"> 
      <ul class="postListSmall related"> 
       <?php while (have_posts()) : the_post(); ?> 
        [do stuff] 
       <?php endwhile; ?> 

     <?php 
      // Second Loop 
     ?> 
      <?php query_posts('cat=-164'); ?> 
      <?php rewind_posts(); ?> 
       <?php while (have_posts()) : the_post(); ?> 
        [do stuff] 
       <?php endwhile; ?> 

    <?php else : ?> 
       [do stuff] 
    <?php endif; ?> 

怎么办?

+1

http://wordpress.org/extend/plugins/search-everything/检查出来。 http://yoast.com/wordpress-search/也是这个。 – David 2010-01-22 15:17:34

+0

这不是我想到的,但谢谢。我需要排除,重置和查询。这对于插件来说太具体了,可以用query_posts来实现。我只是不明白为什么这不起作用。 – 2010-01-22 15:20:57

回答

0

我知道这是一个老的文章,但我有一个类似的问题,我想我也有同感:

  1. 您正在创建一个查询,然后调用第二个查询,但随后试图倒带查询。这不是倒带功能的工作原理。看看Rewind Documentation。你还会说:

query_posts()只是重置我的结果。

那么为什么你要在新的查询后立即调用回滚函数?此外,如果您重置结果,那么为什么它完全是一个不同的查询?这:

 $s = get_query_var('s'); 
     query_posts('s=' . $s . '&cat=164'); 

是不一样的:

 <?php query_posts('cat=-164'); ?> 
     <?php rewind_posts(); ?> 

要获得不同类别的2个结果我做了以下内容:只使用一个循环,不使用回退功能,在使用get_the_category if语句在循环,例如:

<?php 
$s = get_query_var('s'); 
query_posts('s=' . $s . '&cat=164'); 

while (have_posts()) : the_post(); 
    foreach(get_the_category() as $category){ 
     if($category->name == "category name"){ 
      //Concatenate to the left div 
     } else { 
      //concatenate to the right div 
     } ?> 

希望这有助于。