Search code examples
phpwordpresswoocommerceproductstock

How to hide products with stock less than 2 on WooCommerce shop page


I own an e-Commerce business and i want to hide the products that have a stock of less than 3.

This is what i came up to:

add_action( 'woocommerce_product_query', 'react2wp_hide_products_with_stock_higher_than_two' );
function react2wp_hide_products_with_stock_higher_than_two( $q ){
    $meta_query = $q->get( 'meta_query' );
    $meta_query[] = array(
        'key'       => '_stock',
        'value'     => 2,
        'compare'   => '>'
    );
    $q->set( 'meta_query', $meta_query );
}

Have you ever set a similar code? Any errors in this line?


Solution

  • You're close, add type

    'type' => 'numeric' // specify it for numeric values

    function react2wp_hide_products_with_stock_higher_than_two( $q, $query ) {
        // Get any existing meta query
        $meta_query = $q->get( 'meta_query' );
    
        // Define an additional meta query 
        $meta_query[] = array(
            'key'       => '_stock',
            'value'     => 2,
            'type' => 'numeric', // specify it for numeric values
            'compare'  => '>'
        );
    
        // Set the new merged meta query
        $q->set( 'meta_query', $meta_query );
    }
    add_action( 'woocommerce_product_query', 'react2wp_hide_products_with_stock_higher_than_two', 10, 2 );