在Woocommerce中显示缺货产品

2022-08-30 16:59:13

是否可以在wordpress中在类别或页面的末尾显示缺货产品?

因此,客户首先看到可用的产品,然后看到缺货的产品。


答案 1

这与Viktor & Bogdan的答案相同,但没有额外的Class代码。

它使用筛选器来修改产品查询。我们将wp_postmeta表添加到查询中,并在现有查询前面附加一个子句。这样,任何其他子句也会保留在查询中。post_clauseJOINorderby _stock_statusorderby

add_filter('posts_clauses', 'order_by_stock_status');
function order_by_stock_status($posts_clauses) {
    global $wpdb;
    // only change query on WooCommerce loops
    if (is_woocommerce() && (is_shop() || is_product_category() || is_product_tag() || is_product_taxonomy())) {
        $posts_clauses['join'] .= " INNER JOIN $wpdb->postmeta istockstatus ON ($wpdb->posts.ID = istockstatus.post_id) ";
        $posts_clauses['orderby'] = " istockstatus.meta_value ASC, " . $posts_clauses['orderby'];
        $posts_clauses['where'] = " AND istockstatus.meta_key = '_stock_status' AND istockstatus.meta_value <> '' " . $posts_clauses['where'];
    }
    return $posts_clauses;
}

如果您出于某种原因想要先缺货商品,则可以更改为。istockstatus.meta_value ASCistockstatus.meta_value DESC

在WP上测试:4.8;卫生间 3.0.8


答案 2

我尝试了上述所有解决方案,它们有效,但导致网站上的其他问题(可能是由于主题冲突),我确信它们在不同情况/主题下都很好。下面的代码最终对我很好(提到的源代码)

来源:https://www.businessbloomer.com/woocommerce-show-in-stock-products-first-shop/

/**
 * @snippet       Sort Products By Stock Status - WooCommerce Shop
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 3.9
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
 
add_filter( 'woocommerce_get_catalog_ordering_args', 'bbloomer_first_sort_by_stock_amount', 9999 );
 
function bbloomer_first_sort_by_stock_amount( $args ) {
   $args['orderby'] = 'meta_value';
   $args['order'] = 'ASC';
   $args['meta_key'] = '_stock_status';
   return $args;
}

推荐