Créer un espace B2B sur WooCommerce avec des comptes pro

Créer un espace B2B sur WooCommerce avec des comptes pro

Pour vendre aux professionnels sur une boutique WooCommerce qui vend déjà aux particuliers, il faut trois briques : un formulaire qui crée des comptes avec un rôle « Pro », des prix réservés à ce rôle, puis quelques règles propres au B2B. Tout peut se faire avec des extensions gratuites, et quelques lignes de code pour les règles plus fines.

En bref

  • User Registration crée un formulaire d’inscription qui attribue le rôle « Pro ».
  • Role Based Pricing (gratuit) ou YITH Role Based Prices (payant) fixent les prix de ce rôle.
  • Un rôle peut évoluer automatiquement selon le montant acheté.
  • Quatre extraits de code : minimum de commande, catégories masquées, colonne Société, moyens de paiement par rôle.
  • Les codes sont compatibles avec le stockage des commandes HPOS de WooCommerce.

1. Un formulaire pour créer des comptes pro

Deux extensions gratuites suffisent :

Pensez à demander dès l’inscription la raison sociale, le SIREN et le numéro de TVA : depuis la réforme de la facturation électronique, ces informations sont indispensables pour facturer un professionnel.

Voir le formulaire de compte pro en vidéo sur YouTube

2. Des prix réservés au rôle Pro

Avec l’extension gratuite

Role Based Pricing for Woo, déjà installée à l’étape 1, fixe des prix par rôle ou par client, produit par produit ou pour des catégories entières. Elle peut aussi masquer les prix ou bloquer l’achat pour les visiteurs non connectés. Les remises en pourcentage et les quantités minimum ou maximum par rôle sont dans sa version payante.

Voir la mise en place des prix pro, version gratuite

Avec l’extension payante de YITH

YITH WooCommerce Role Based Prices va plus loin :

  • des règles globales sur toute la boutique, en pourcentage ou en euros, ou produit par produit ;
  • des prix différents pour vos partenaires, revendeurs ou membres ;
  • le masquage des prix et du bouton « Ajouter au panier » pour certains rôles ou les visiteurs non inscrits.

Elle ne crée pas de rôle : ajoutez votre rôle « Professionnel » avec l’extension gratuite Members.

Voir la mise en place des prix pro, version premium

Pour un catalogue B2B plus complet (formulaire de commande en gros, devis, conditions de paiement par client), une extension dédiée comme B2BKing regroupe tout dans un seul outil.

3. Faire évoluer le rôle automatiquement

Un exemple : quand un client pro atteint 1 000 € d’achats, il passe au rôle « Pro 2 », qui bénéficie de remises plus fortes, réglées comme à l’étape 2. C’est ce que fait YITH Automatic Role Changer for WooCommerce.

Voir le changement de rôle automatique en vidéo

4. Quatre règles B2B en quelques lignes de code

Ces extraits se collent dans le fichier functions.php de votre thème enfant ou dans l’extension Code Snippets. Remplacez pro par l’identifiant de votre rôle. Ils servent aussi sur une boutique classique.

Imposer un minimum de commande aux pros

Sur le site d’un client, les comptes pro ne pouvaient commander qu’à partir de 450 € HT. Le message s’affiche dans le panier et bloque la commande tant que le montant n’est pas atteint :

add_action( 'woocommerce_check_cart_items', 'wycan_minimum_commande_pro' );
function wycan_minimum_commande_pro() {
    $minimum = 450;
    $roles   = (array) wp_get_current_user()->roles;

    if ( ! in_array( 'pro', $roles, true ) || ! WC()->cart ) {
        return;
    }

    $total = (float) WC()->cart->get_cart_contents_total();

    if ( $total < $minimum ) {
        wc_add_notice(
            sprintf(
                'Les comptes pro commandent à partir de %s HT. Votre panier : %s HT.',
                wc_price( $minimum ),
                wc_price( $total )
            ),
            'error'
        );
    }
}

Masquer des catégories aux pros

add_action( 'pre_get_posts', 'wycan_masquer_categories_pro' );
function wycan_masquer_categories_pro( $query ) {
    if ( is_admin() || ! in_array( 'pro', (array) wp_get_current_user()->roles, true ) ) {
        return;
    }

    $liste_produits = 'product' === $query->get( 'post_type' )
        || ( $query->is_main_query() && $query->is_tax( array( 'product_cat', 'product_tag' ) ) );

    if ( ! $liste_produits ) {
        return;
    }

    $tax_query   = (array) $query->get( 'tax_query' );
    $tax_query[] = array(
        'taxonomy' => 'product_cat',
        'field'    => 'term_id',
        'terms'    => array( 10, 20, 30 ),
        'operator' => 'NOT IN',
    );
    $query->set( 'tax_query', $tax_query );
}

Remplacez 10, 20, 30 par les identifiants des catégories à masquer. Ce code retire les produits des listes ; une personne qui connaît l’adresse exacte d’un produit peut encore l’ouvrir.

Afficher la société dans la liste des commandes

Une colonne « Société » dans la liste des commandes montre d’un coup d’œil quel client pro a commandé. Elle reprend le champ Société saisi au paiement et peut être masquée depuis les options de l’écran. Ce code fonctionne avec le stockage HPOS, activé par défaut sur les boutiques récentes, comme avec l’ancien stockage :

add_filter( 'manage_woocommerce_page_wc-orders_columns', 'wycan_colonne_societe' );
add_filter( 'manage_edit-shop_order_columns', 'wycan_colonne_societe' );
function wycan_colonne_societe( $columns ) {
    $nouvelles = array();
    foreach ( $columns as $cle => $libelle ) {
        $nouvelles[ $cle ] = $libelle;
        if ( 'order_status' === $cle ) {
            $nouvelles['billing_company'] = 'Société';
        }
    }
    return $nouvelles;
}

add_action( 'manage_woocommerce_page_wc-orders_custom_column', 'wycan_colonne_societe_contenu', 10, 2 );
add_action( 'manage_shop_order_posts_custom_column', 'wycan_colonne_societe_contenu', 10, 2 );
function wycan_colonne_societe_contenu( $column, $commande ) {
    if ( 'billing_company' !== $column ) {
        return;
    }
    $commande = $commande instanceof WC_Order ? $commande : wc_get_order( $commande );
    if ( $commande ) {
        echo esc_html( $commande->get_billing_company() );
    }
}

Masquer des moyens de paiement aux pros

Par exemple, ne pas proposer PayPal ni le chèque aux comptes pro :

add_filter( 'woocommerce_available_payment_gateways', 'wycan_paiements_pro' );
function wycan_paiements_pro( $passerelles ) {
    if ( ! in_array( 'pro', (array) wp_get_current_user()->roles, true ) ) {
        return $passerelles;
    }

    foreach ( array( 'cheque', 'paypal' ) as $id ) {
        unset( $passerelles[ $id ] );
    }

    return $passerelles;
}

Les identifiants des moyens de paiement se lisent dans l’adresse de leur page de réglages, dans WooCommerce, Réglages, Paiements.

Et ensuite ?

Avec ces briques, votre boutique accueille les professionnels avec leurs propres prix et leurs propres règles, sans créer un second site. Pour un vrai portail B2B (tarifs négociés par client, commandes récurrentes, liaison avec votre ERP), un développement sur mesure devient souvent plus simple à maintenir qu’une pile d’extensions.

Vous avez un projet B2B sur WooCommerce ? On développe les règles qui collent à votre façon de vendre, ou parlons de votre boutique.

Sommaire
À lire aussi

D’autres articles qui peuvent vous servir

Facturation électronique WooCommerce : comment mettre votre boutique en conformité

Facturation électronique WooCommerce : comment mettre votre boutique en conformité

Lire l’article →
Cookies et consentement : pourquoi une simple bannière ne suffit plus

Cookies et consentement : pourquoi une simple bannière ne suffit plus

Lire l’article →
Bouton de rétractation WooCommerce : le guide pour se conformer à l’article L221-21

Bouton de rétractation WooCommerce : le guide pour se conformer à l’article L221-21

Lire l’article →

Un projet, une question ?

Devis gratuit · Acompte remboursable · Solde si satisfait · Sans engagement