【问题标题】:Sort Search Results By Post Type按帖子类型对搜索结果进行排序
【发布时间】:2012-11-09 08:52:17
【问题描述】:

我想弄清楚如何按帖子类型对搜索结果进行排序。我问了关于 wordpress 堆栈交换的问题,有人试图回答,但我认为他们不明白我想要达到的目标。 -- https://wordpress.stackexchange.com/questions/72914/search-results-sorted-by-post-types

例如,当一个人搜索他们要进入页面的字词时 结果显示了从所有帖子类型中找到的所有>帖子,但是 顶部有不同的帖子类型名称>将排序的链接 结果并仅显示相应帖子类型的帖子。现在我 在每种帖子类型的搜索结果页面上有几个循环但是当我测试它时,>循环都显示相同的结果甚至 尽管每个循环都有一个针对不同帖子类型的查询。

我的搜索页面代码 - http://pastebin.com/L9zEw1cn

这比第一个循环略高<?php global $wp_query; $total_results = $wp_query->found_posts; ?> This is the first loop <?php if(have_posts()) : ?> <?php while(have_posts()) : the_post() ?> //My divs// <?php endwhile; endif; ?> <?php wp_reset_postdata(); ?>

然后是第二个循环,除了帖子类型名称之外,其他所有循环都相同 -- <?php $args = array( 'post_type' => 'videos', 's' => $s ); ?> <?php if(have_posts()) : ?> <?php while(have_posts()) : the_post() ?> //My divs <?php endwhile; endif; ?> <?php wp_reset_postdata(); ?>

如何解决这个问题,以便每个循环仅显示该帖子类型的搜索结果?

【问题讨论】:

    标签: wordpress sorting loops search


    【解决方案1】:

    尝试在第二个循环中使用get_posts

    $args = array(
      'post_type'=> 'videos',
      'numberposts' => -1,
      's' => $s
    );
    $videos = get_posts( $args );
    foreach( $videos as $post ) : setup_postdata($post);
        // My divs
    endforeach;
    

    http://codex.wordpress.org/Template_Tags/get_posts

    编辑:在参数中添加了“numberposts”。

    【讨论】:

    • 感谢您的回复。但是,我尝试了您的建议,但现在显示的帖子比实际假设的要少。确切地说,少了大约 4 个。我有这样的 - <?php $args = array( 'post_type'=> 'videos', 's' => $s ); $videos = get_posts( $args ); foreach( $videos as $post ) : setup_postdata($post); ?> 然后是我的 div 然后关闭 <?php endforeach; ?> <?php wp_reset_postdata(); ?> 我也在为其他 3 种帖子类型这样做,并且我在开始时有一个常规循环来显示所有结果。
    • 在参数中使用numberposts。您可以在 codex 页面中阅读如何使用 get_posts。
    • 我尝试对其他帖子类型使用相同的上述代码,它向我显示了完全相同的帖子。我尝试将重置发布数据更改为重置查询,它给了我相同的结果。
    • 我也试过了,但没有显示没有帖子<?php global $query_string; query_posts( $query_string . '&post_type=videos' ); ?> <?php if ( $query ) : ?> <?php while (have_posts()) : the_post(); ?>
    • 我已经取得了一些进展,只是还没有完全达到。我将此代码用于循环-<?php global $post; $args=array( 'post_type' => 'videos', 'post_status' => 'publish', ); $myposts = get_posts($args); foreach( $myposts as $post ) : setup_postdata($post); ?> //divs <?php endforeach; ?> 它显示了正确的帖子类型,但未显示正确的帖子。如何修改该代码以使所有循环都使用相同的搜索查询/术语??
    猜你喜欢
    • 1970-01-01
    • 2011-03-05
    • 2013-08-19
    • 2014-08-15
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多