wordpress - 店铺页面先展示特色商品,最后展示缺货商品

标签 wordpress woocommerce hook-woocommerce custom-code

我需要在商店页面顶部显示特色产品,还需要在列表底部显示缺货产品。

我可以使用以下代码在底部制作缺货产品,但它会随之重新订购特色产品。

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 );

有没有办法可以同时实现这两个目标?

请帮助我。

谢谢。

最佳答案

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

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

关于wordpress - 店铺页面先展示特色商品,最后展示缺货商品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55959346/

相关文章:

css - 搜索栏在某些浏览器中不显示

php - 在 WooCommerce 中取消设置有条件的自定义结帐字段

wordpress - woocommerce_checkout_update_order_meta 操作不起作用

php - 更改订单项目在 WooCommerce 管理订单页面中显示的元键标签

php - 如果产品价格高于 Woocommerce 中的特定金额,请在产品价格前添加文本

javascript - 如何先加载所有网站菜单和其他文本内容,然后在 WordPress 中加载图像?

javascript - 如何在一个页面上关闭多个模态框

php - 如何在 WordPress 中使用短代码显示 comments_template?

api - RESTful API - WooCommerce REST API 请求因curl 失败

php - 基于 Woocommerce 3 中 2 个自定义字段的产品常规价格计算