Woocommerce - 在其他所有内容之前在搜索结果中显示产品

时间:2014-09-22 04:04:16

标签: wordpress woocommerce

目前我有以下代码:

 <?php while ( have_posts() ) : the_post(); ?>

        <?php 
            if ( get_post_type() !== 'post' ) {
                if ( get_post_type() == 'landing-pages' ) {
                    get_template_part( 'templates/content/archive', 'landingpages' );
                } elseif ( get_post_type() == 'product' ) {
                    get_template_part( 'templates/content/archive', 'product' );
                } else {
                    get_template_part( 'templates/content/archive', 'cpt' );
                }
            } else {
                get_template_part( 'templates/content/archive', 'posts' );
            };
        ?>        

    <?php endwhile; ?>

  <?php get_template_part( 'templates/modules/nav', 'pagination' ); ?>

但是,这只显示最新到最旧的。随着自定义帖子,woocommerce产品,帖子,页面,所有混合togather。

我只想显示产品,然后一旦显示所有匹配的产品,就会返回与搜索查询匹配的任何其他内容,例如:其他自定义帖子类型,页面和帖子。

有关如何实现这一目标的任何建议吗?

感谢。

1 个答案:

答案 0 :(得分:0)

将以下代码复制并粘贴到主题的functions.php文件中。

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

    if(!is_admin() && is_search())
        $orderby =  $wpdb->prefix."posts.post_type DESC, {$wpdb->prefix}posts.post_date DESC";

    return  $orderby;
}