Dans cet article de blog nous allons voir ensemble comment créer une partie orientée B2B, sous entendu que vous avez déjà une boutique en ligne sous WooCommerce et vous vendez à des particuliers, de manière très simple pour que vous puisiez avoir des comptes PRO sur votre e-commerce et leur attribuer des tarifs spécifiques.
Nous irons plus loin également avec pas mal d’astuces sympa.
En gros, cet article va être dédié à la mécanique du B2B sur une boutique en ligne existante (mais les astuces pourront être adaptées sur n’importe quel type de boutique)
Sommaire de notre article sur la création du B2B sur WooCommerce
1 - Créer un formulaire pour avoir des comptes pro sur WooCommerce
Dans la vidéo ci-dessous nous allons utiliser deux extensions :
– User Registration, qui va nous permettre de créer un formulaire de création de compte sur notre site et d’assigner ce nouveau compte en tant que rôle « Pro ».
– WooCommerce Role Based Pricing by Meow Crew, qui va nous permettre dans cette vidéo de créer le fameux rôle « Pro ».
A noter que pour réaliser tout cela je n’ai pas utilisé les versions premium, donc vous pourrez réaliser cela gratuitement.
2 - Mettre en place des prix pour notre rôle "Pro" sur notre boutique WooCommerce
Dans la vidéo ci-dessous nous allons utiliser une extension :
– WooCommerce Role Based Pricing by Meow Crew, que nous avons déjà utilisé dans l’étape juste avant et qui fait de base la fonctionnalité de gestion des tarifs en fonction d’un rôle utilisateur.
Toujours pareil, j’ai utilisé la version gratuite qui permet de faire ce que l’on souhaite, mais sans pouvoir aller très loin.
3 - Mettre en place des prix pour notre rôle "Pro" sur notre boutique WooCommerce (extension premium)
Dans la vidéo ci-dessous nous allons utiliser deux extensions :
– YITH WooCommerce Role Based Prices, qui va nous permettre de définir et afficher différents prix pour les produits en fonction du rôle d’utilisateur.
Vous pourrez masquer les prix et ajouter au bouton du panier aux utilisateurs ayant un rôle utilisateur spécifique.
Mettre en place des règle globales sur toute la boutique en % ou en € ou par produit.
L’extension est bien entendu premium mais elle vaut largement le coup !
– Members, qui va nous permettre de créer notre rôle « Professionnel », car en effet, YITH WooCommerce Role Based Prices ne permet pas de créer de nouveaux rôles. Il ne gère que ceux déjà disponibles.
Si vous avez bien tout appliqué (l’une des deux options ci dessus) vous êtes désormais en mesure de proposer à vos clients des offres pro B2B sur votre boutique en ligne WooCommerce.
Nous allons voir maintenant des petits bonus, qui vont augmenter les possibilités de votre offre B2B mais cela peut être également utilisé sur une boutique classique !
4 - Autoriser le rôle pro à passer commander qu'à partir d'un certain montant
Récemment j’ai du appliquer une restriction sur le site d’un client sur le rôle « Pro » que j’avais crée. En effet, nous avons mis en place une règle qui empêche le client Pro de commander tant qu’il n’a pas atteint un minimum de montant dans son panier.
Dans l’exemple de code ci-dessous nous avons bloqué à 450€.
Pour utiliser cela sur votre site, copiez cela dans votre functions.php du thème enfant ou via l’extension code snippet.
Modifiez la ligne 6 pour définir le rôle concerné et la ligne 11 pour changer le montant voulu.
function check_min_amount_for_pro_users() {
if ( is_checkout() && is_user_logged_in() ) {
$user = wp_get_current_user();
// Vérifiez si l'utilisateur a le rôle "Pro"
if ( in_array( 'pro', (array) $user->roles ) ) {
// Obtenez le montant total du panier
$cart_total = WC()->cart->cart_contents_total;
// Si le total est inférieur à 450€, affichez un message d'erreur et empêchez le passage de commande
if ( $cart_total < 450 ) {
wc_add_notice( 'Les utilisateurs avec le rôle "Pro" doivent avoir un panier d\'au moins 450€ pour passer une commande.', 'error' );
}
}
}
}
add_action( 'woocommerce_check_cart_items', 'check_min_amount_for_pro_users' );
5 - Changer automatiquement le rôle d'un utilisateur en fonction d'un scénario
Nous allons voir comment basculer automatiquement d’un role « Pro » à un rôle « Pro 2 » en fonction d’un scénario basique qui est : Quand mon client pro atteint 1000€ d’achat sur la boutique il gagne le rôle « Pro 2 ».
De par ce rôle vous allez pouvoir ensuite créer une mécanique de prix différents comme vu à l’étape 3 de cet article pour créer des remises différentes en fonction du rôle qu’il vient d’obtenir.
Dans la vidéo ci-dessous nous allons utiliser une extension :
– YITH Automatic Role Changer for WooCommerce, qui va nous permettre de faire tout cela !
6 - Masquer des catégories de produit à un rôle Pro
Avec le code suivant vous allez pouvoir masquer des catégories de produit au rôle « pro » que vous souhaitez.
Simplement, mettez ce code dans votre functions.php du thème enfant.
/************************************************************************************/
/* Masquer des catégories de produit à un rôle précis */
/************************************************************************************/
add_action('pre_get_posts', 'hide_category_for_pro_users');
function hide_category_for_pro_users($query) {
if (is_admin()) {
return;
}
if (current_user_can('pro')) { // Si l'utilisateur a le rôle 'pro'
$excluded_categories = array(10, 20 ,30); // Remplacez 10, 20, 30 par les ID des catégories que vous voulez masquer
$tax_query = (array) $query->get('tax_query');
$tax_query[] = array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $excluded_categories,
'operator' => 'NOT IN',
);
$query->set('tax_query', $tax_query);
}
}
7 - Ajouter une colonne "Société' dans la liste des commandes
Avec le code suivant vous allez pouvoir afficher une colonne « Société » dans la liste de vos commandes afin de voir en un coup d’oeil quel est le client pro qui a commandé. Cela affichera le champ Société que la personne renseigne lors de l’étape de paiement.
Cette colonne est filtrable et peut être masquée via les options de l’écran de WordPress
Simplement, mettez ce code dans votre functions.php du thème enfant.
// Ajout de la colonne dans l'écran d'administration des commandes WooCommerce
add_filter( 'manage_edit-shop_order_columns', 'wycan_add_new_order_admin_list_column' );
function wycan_add_new_order_admin_list_column( $columns ) {
$new_columns = array();
foreach ( $columns as $column_name => $column_info ) {
$new_columns[ $column_name ] = $column_info;
if ( 'order_status' === $column_name ) {
$new_columns['billing_company'] = __( 'Société', 'woocommerce' );
}
}
return $new_columns;
}
// Affichage du contenu de la colonne
add_action( 'manage_shop_order_posts_custom_column', 'wycan_add_new_order_admin_list_column_content' );
function wycan_add_new_order_admin_list_column_content( $column ) {
global $post;
if ( 'billing_company' === $column ) {
$order = wc_get_order( $post->ID );
if ( $order ) {
echo esc_html( $order->get_billing_company() );
}
}
}
// Rendre la colonne "Société" gérable
add_filter( 'manage_shop_order_posts_columns', 'wycan_make_column_manageable', 10, 1 );
function wycan_make_column_manageable( $columns ) {
$columns['billing_company'] = 'billing_company';
return $columns;
}
8 - Restreindre / afficher des modes de paiement en fonction du rôle pro
Grâce à ce petit bout de code nous allons pouvoir restreindre aux comptes pro et de ce fait ne pas autoriser les Pro à commander via une ou des passerelles de paiement sur notre boutique.
Par exemple, imaginons que je ne veux pas faire apparaître si mon client a le rôle professionnel les modes de paiement PayPal et chèque ces modes de paiement, voici ce que je dois ajouter dans mon fichier functions.php
Il suffira de modifier la ligne 6 avec le rôle concerné et la ligne 9 avec les méthodes de paiement que vous souhaitez masquer
add_filter('woocommerce_available_payment_gateways', 'restreindre_passerelle_paiement_par_role');
function restreindre_passerelle_paiement_par_role($available_gateways) {
// Si l'utilisateur est connecté et a le rôle 'Professionnel'
if (is_user_logged_in() && current_user_can('professionnel')) {
// Les IDs des passerelles de paiement à restreindre
$gateways_to_restrict = array('cheque', 'paypal'); // Ajoutez ou retirez des IDs selon vos besoins
// Boucle à travers chaque passerelle à restreindre
foreach ($gateways_to_restrict as $gateway_id) {
// Supprime la passerelle de paiement de la liste des passerelles disponibles
if (isset($available_gateways[$gateway_id])) {
unset($available_gateways[$gateway_id]);
}
}
}
return $available_gateways;
}
10 Responses
Merci du tuto !
Est-ce possible d’afficher les modes de livraisons en fonction du role ?
Bonjour,
Oui je pense que cela doit être faisable en code ou avec une extension peut être
Bonjour,
Est-il possible d’afficher les tarifs en HT pour un rôle pro, alors que les tarifs resteraient en TTC pour le rôle client classique ?
Merci d’avance de votre aide !
Bonjour,
Je pense que cela doit être faisable en effet 😉
Mais cela doit impliquer de renseigner les tarifs en HT de base sur le site et d’appliquer un calcul de TVA ensuite via la fonctionnalités TVA de WooCommerce. Cela pourrait ensuite nous permettre de filtrer en fonction d’un rôle et afficher ou non le prix avec TVA.
Un plugin existe d’ailleurs, mais je ne l’ai pas testé, sinon il faudra faire un peut de code !
As tu trouvé la solution ?
Bonjour,
Merci pour ce tuto. L’isntallation d’une boutique B2B est en cours.
J’ai démarré la semaine dernière …
Étape 1 : installation de User Registration . Depuis cet étape, mes produits ne pleuvent plus être ajouter dans le panier tant que le client n’est pas enregistré et ça me gène ? Une solution ?
Belle journée
Bonjour, c’est qu’il y a probablement un réglage ou une case à cocher je présume.
Merci pour votre retour.
J’ai fait à l’identique de la vidéo ….
Après recherche, le soucis apparu après installation du plugging :
le texte du bouton « ajouter au panier » change lorsqu’on n’est connecté pas au site en » uniquement pour les clients enregistré » ?
Autre problème découvert : le formulaire de création d’un nouveau compte pro disparait en mode « session privée » et apparait en mode administrateur sur la page ?
Il est possible que depuis il y ai des changements dans les réglages du plugin cependant 🙂
Concernant l’autre probleme je ne comprends pas, je ne rencontre pas ce soucis hélas.
Est ce que dans Réglages > Général : la case tout le monde peut s’inscrire est cochée?
Une petite recherche google me donne d’ailleurs la réponse 😀
Merci pour votre aide.
Problème n°2 résolu, la case tout le monde peut s’inscrire n’était pas coché.
Problème N°1, à suivre.
Belle soirée