WooCommerce – Backorders per user role

WooCommerce Code Snippets

Stel dat je op je WooCommerce webshop met verschillende gebruikersprofielen werkt. Je wilt bijvoorbeeld gaan werken met b2b-klanten als ook b2c-klanten, en hebt daarom een ‘b2b user role’ aangemaakt. Je b2b-klanten krijgen dan een aparte login en als zij ingelogd zijn, zien zij de prijzen bijvoorbeeld ex BTW, terwijl b2c-klanten de prijzen zien met BTW.

In WooCommerce kan je per product instellen of het al dan niet ‘backorders’ mag aanvaarden. M.a.w., wat moet er gebeuren als het product uit voorraad is? Mag men dit artikel dan nabestellen of niet?

Probleem

Stel nu dat je je b2b-klanten wel wil laten nabestellen, maar je b2c-klanten niet. Hoe pak je dat dan aan? Want in WooCommerce is het of het één, of het ander.

Oplossing

Dit kan je regelen a.d.h.v. onderstaande code snippet, waarmee de optie om het artikel toe te voegen aan het winkelmandje wordt uitgeschakeld.

Note: de extra user role die we hier hebben aangemaakt voor b2b-klanten, heeft als slug ‘b2b’.

// Prevent B2C customers to place backorders

function wbgoe_is_purchasable( $is_purchasable, $product ) {
    if ( current_user_can( 'b2b' ) ) { 
        return true;
    } elseif ( $product->get_stock_quantity() <= 0 ) {
        return false;
    } else {
        return $is_purchasable;
    }
}

add_filter( 'woocommerce_is_purchasable', 'wbgoe_is_purchasable', 10, 2 );

WAAR DEZE CODE SNIPPET PLAATSEN?

Je kunt PHP snippets toevoegen onderaan je ‘functions.php’ file van je ‘child theme’ (voor de ‘>?’ als deze er staat). CSS code daarentegen, plaats je in je ‘style.css’ file van je ‘child theme’. Bezint eer ge begint wanneer je deze files aanpast, want deze kunnen je website ‘breken’.

HEB JE HULP NODIG MET WOOCOMMERCE OP MAAT GEMAAKTE AANPASSINGEN?

Contacteer ons vrijblijvend >>

Button back to top