使用Wordpress过滤搜索结果

时间:2010-01-22 15:14:15

标签: php wordpress templates wordpress-theming

我正在尝试设置包含两列的搜索结果页面。第一列将显示除一个(图库)之外的所有类别的结果,第二列将仅显示图库类别。

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 个答案:

答案 0 :(得分:0)

我知道这是一个老帖子,但我遇到了类似的问题,并认为我会分享:

  1. 您正在创建一个查询,然后调用第二个查询,然后尝试回滚查询。这不是倒带功能的工作原理。看看Rewind Documentation。你也说:
  2.   

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

    那你为什么要在新查询后立即调用倒带功能呢?此外,如果您正在重置结果,那么为什么它完全是另一个查询?这样:

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

    与此不一样:

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

    要获得不同类别的2列结果,我执行了以下操作:仅使用一个循环,不使用倒带,在循环中的if语句中使用get_the_category,例如:

    <?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
            } ?>
    
       

    希望这有帮助。