Wordpress搜索结果将自定义帖子类型中的主要帖子分开

时间:2017-05-04 17:04:54

标签: php wordpress loops search

我有一个名为' Artists'的自定义帖子类型。 我目前的搜索结果是在一个分组中将此帖子类型与我的标准帖子一起提取。 我在分析结果中的两个帖子类型时遇到了问题。

而不是......

  • 博客文章
  • 博客文章
  • 艺术家帖子
  • 博客文章
  • 艺术家帖子

我喜欢......

博客帖子:

  • 博客文章
  • 博客文章
  • 博客文章

艺术家帖子:

  • 艺术家帖子
  • 艺术家帖子

这可能吗?我不确定我是否可以通过一个循环/查询解决这个问题,或者使用两个查询会更快?

目前的代码在这里......

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    <header class="entry-header">
        <?php the_title( sprintf( '<h1 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h1>' ); ?>

        <?php if ( 'post' == get_post_type() ) : ?>
        <div class="entry-meta">
            <?php the_date(); ?>
        </div><!-- .entry-meta -->
        <?php endif; ?>
    </header><!-- .entry-header -->

    <div class="entry-summary">
        <?php the_excerpt(); ?>
    </div><!-- .entry-summary -->
</article><!-- #post-## -->

任何帮助表示赞赏。我已经意识到这方面已经存在一些类似的问题,但是对于这种特殊情况,大多数都没有帮助。

1 个答案:

答案 0 :(得分:-1)

只需更改wp_query对象的顺序

即可
$args = array(
    'order' => 'type'
);
$query = new WP_Query( $args );

OP懒得阅读文档,所以我在这里提供一个例子:

$args = array('order' => 'type');
$my_query = new WP_Query( $args );
while ( $my_query->have_posts() ) {
 //
}

编辑: 如果您想要避免使用全局对象的新实例并使用全局对象,那么这是另一种可能的解决方案:

add_filter('posts_orderby','my_sort_custom',10,2);
function my_sort_custom( $orderby, $query ){
    global $wpdb;

    if(!is_admin() && is_search()) 
        $orderby =  $wpdb->prefix."posts.post_type ASC"

    return  $orderby;
}