CAMPUS Code Snippets

Sorteer filter: enkel producten tonen die in stock zijn

PROBLEEM

We willen dus filteren op producten die een positief stock voorraad getal hebben, met andere woorden hoger dan 0.

In principe zijn dat dus producten de je effectief op schap hebt liggen.
Ook al heb je de instelling “nabestelling” actief staan, daar houdt deze filter geen rekening mee.

PHP
// Add in-stock option to sorting dropdown
add_filter( 'woocommerce_catalog_orderby', 'add_in_stock_orderby' );

function add_in_stock_orderby( $orderby_options ) {
    $orderby_options['in_stock'] = __( 'Alle Producten op Stock', 'woocommerce' );
    return $orderby_options;
}

// Modify product query based on sorting option
add_filter( 'woocommerce_product_query_meta_query', 'modify_shop_query_by_stock' );

function modify_shop_query_by_stock( $meta_query ) {
    $orderby_value = isset( $_GET['orderby'] ) ? wc_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );

    if ( 'in_stock' === $orderby_value ) {
        $meta_query[] = array(
            'key' => '_stock',
            'value' => '0',
            'compare' => '>',
            'type' => 'numeric',
        );
    }

    return $meta_query;
}

Screenshot van sortering;

Dit is de standaard shop overzicht van WooCommerce. Zoals je ziet zo’n 35 producten.

Kies “Alle Producten op Stock“; dat is de optie die de snippet toevoegt aan je shop

Het resultaat is dat er in ons geval zo’n 2 producten op stock getoond worden: