PROBLEEM
Er bestaan veel WooCommerce plugins die filteren op de stock status. Maar stock status is niet hetzelfde als het “aantal” producten in stock. Want als je werkt met “nabestellingen mogelijk” dan heb je in principe altijd “voorraad”. Wat als een klant producten kan filteren op effectieve stock? Et voila!
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.
// 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: