首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >首页展示特色商品,最后展示脱销商品

首页展示特色商品,最后展示脱销商品
EN

Stack Overflow用户
提问于 2019-05-03 03:53:41
回答 1查看 251关注 0票数 2

我需要在商店页面顶部显示特色产品,也需要在列表底部显示脱销产品。

我可以用下面的代码使底部的脱销产品,但它重新订购的特色产品与它一起。

代码语言:javascript
复制
add_action( 'pre_get_posts', function ( $q ) {
    if (   is_shop()                  // Target only front end 
         && $q->is_main_query()        // Only target the main query
         && $q->is_post_type_archive() // Change to suite your needs
    ) {
        $q->set( 'meta_key', '_stock_status' );
        $q->set( 'orderby',  'meta_value'    );
        $q->set( 'order',    'ASC'           );
    }
}, PHP_INT_MAX );

有没有办法让我同时做到这两点?

请帮我一下。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-15 10:40:17

现在回答这个问题已经太晚了,也许其他人需要:

代码语言:javascript
复制
add_filter('posts_clauses', 'custom_order_by_stock_status', 10, 2);
function custom_order_by_stock_status($posts_clauses, WP_Query $query) {
    global $wpdb;

    if ( $query->is_main_query() && (is_shop() || is_product_taxonomy()) ) {
        $featured_ids = wc_get_featured_product_ids();
        $posts_clauses['join'] .= " LEFT JOIN $wpdb->postmeta istockstatus ON ($wpdb->posts.ID = istockstatus.post_id AND istockstatus.meta_key = '_stock_status' AND istockstatus.meta_value <> '') ";
        $posts_clauses['orderby'] = " if($wpdb->posts.ID in (0".(implode(",", $featured_ids))."), 0, 1), istockstatus.meta_value ASC, " . $posts_clauses['orderby'];
    }
    return $posts_clauses;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55959346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档