Blog Web & Design

Woocommerce, comment offir un produit après l’ajout d’un code promo ?

developpeur woocommerce

Parfois dans WooCommerce, nous avons besoin d’offrir certains avantages au moment de l’achat et l’utilisation des codes promos est en général une solution suffisante. Toutefois lorsqu’on souhaite offrir autre chose qu’une réduction monétaire, il faut souvent se tourner vers de la modification plus poussée du thème woocommerce.

Voici également une solution simple pour offrir un produit gratuit avec l’utilisation du plugin Simple Gift qui se chargera de faire un ajout automatique du produit dans le panier du client.

Découvrir le plugin

Besoin d’un spécialiste Woocommerce pour votre projet ? Contactez-moi

Dans notre exemple, nous avons mis en place un code promotionnel nommé « PREMIEREFOIS » qui, une fois saisi dans le panier, nous ajoute un produit offert.

Pour réaliser ce type d’offre, vous allez avoir besoin dans un premier temps de créer un produit gratuit, celui-ci ne sera pas listé dans le catalogue, je vais vous montrer comment faire.

1. Ajouter un produit gratuit dans WooCommerce

Pour ce faire, vous allez devoir tout simplement créer un produit qui ne coute rien, c’est à dire que le prix est égal à 0,
et récupérer son identifiant ( ID ) qui nous sera utile par la suite, vous le trouverez dans la liste des produits comme ceci :

Trouver numéro ID d'un produit WooCommerce
Trouver numéro ID d’un produit WooCommerce

Masquer un produit du catalogue woocommerce

Afin d’éviter que le produit soit affiché dans notre boutique, nous devons le masquer. Il y à une option un peu cachée dans WooCommerce, au niveau du bloc de publication, un lien nommé « visibilité du catalogue » et qui propose plusieurs options, donc celle de cacher le produit, cliquez dessus :

Masquer un produit du catalogue woocommerce
Masquer un produit du catalogue woocommerce

La création du coupon de réduction

Maintenant vous devez créer le coupon, de réduction. Dans cotre exemple nous allons l’appeler « premierefois » :

La remise doit se faire sur le panier et avec une réduction de 0€, (puisque le produit et lui même gratuit)

Rendre un produit unique dans le panier

Enfin pour éviter l’ajout de plusieurs produits gratuits, vous devez cocher la case « Vendre individuellement » pour n’autoriser qu’un exemplaire unique d’un article dans une commande.

Besoin d’un spécialiste Woocommerce pour votre projet ? Contactez-moi

Interdire plusieur produits identiques dans le panier Woocommerce
Interdire plusieur produits identiques dans le panier Woocommerce

Une fois notre produit créé et bien configuré il ne nous reste plus qu’à rentrer dans le code. Pour cela vous allez devoir modifier le fichier functions.php de votre theme.

La fonction WooCommerce

Personnalisez ces 2 fonctions avec votre code promo et l’ID de votre produit gratuit

// Configuration :

function mrsize_produit_gratuit_coupon_nom(){
    return 'premierefois'; // Titre du coupon
}
function mrsize_produit_gratuit_id(){
    return 825; // ID du produit gratuit
}

Les lignes suivantes vont permettre d’ajouter le produit gratuit à l’ajout du code promo defini plus haut :

// Hooks :

add_action( 'woocommerce_applied_coupon', 'mrsize_ajouter_produit_gratuit_avec_coupon' );
function mrsize_ajouter_produit_gratuit_avec_coupon( $code_coupon ) {

    $produit_gratuit_id             = mrsize_produit_gratuit_id(); 
    $produit_gratuit_coupon_nom     = mrsize_produit_gratuit_coupon_nom();

    if ( $produit_gratuit_coupon_nom === $code_coupon ) {
        WC()->cart->add_to_cart( $produit_gratuit_id );
    } 
}

et de le supprimer si le coupon n’est plus présent :

add_action('template_redirect','mrsize_enlever_produit_gratuit_sans_coupon'); 
function mrsize_enlever_produit_gratuit_sans_coupon(){

    $produit_gratuit_id             = mrsize_produit_gratuit_id(); 
    $produit_gratuit_coupon_nom     = mrsize_produit_gratuit_coupon_nom();

    // Recuperer l'ID du produit dans le panier :
    $produit_panier_id              = WC()->cart->generate_cart_id( $produit_gratuit_id );
    $produit_panier_article_cle     = WC()->cart->find_product_in_cart( $produit_panier_id );

    $coupons_appliques              = WC()->cart->get_applied_coupons();

    // Si aucun coupon n'est appliqué, on supprime le produit gratuit :
    if( count( $coupons_appliques ) === 0 ) WC()->cart->remove_cart_item( $produit_panier_article_cle );

    // Si au moins un coupon est appliqué :
    if( count( $coupons_appliques ) > 0 ){

        foreach ( $coupons_appliques as $coupon_applique ){

            // Si le coupon n'est le bon, on supprime le produit gratuit :
            if( $coupon_applique !== $produit_gratuit_coupon_nom ){

                // on supprime le produit gratuit :
                if ( $produit_panier_article_cle ) WC()->cart->remove_cart_item( $produit_panier_article_cle );
            }

        }

    }
}

Télécharger le code

Pour un aperçu de l’ensemble du code, rendez-vous sur GitHub.

Besoin d’un spécialiste Woocommerce pour votre projet ? Contactez-moi


Cette article vous a-t’il été utile ? Si vous avez des questions, n’hésitez pas à les poser dans les commentaires ou par e-mail.

Dernière mise à jour le Auteur : Thomas Dufranne

Ce contenu vous a-t-il été utile ?

Merci pour votre avis !

Si vous pensez pouvoir aider d'autres personnes, pensez à partager le contenu

Merci pour votre avis !

Désolé que vous n'ayez pas trouvé votre réponse.

Je vous invite à me poser vos question par commentaire ou par e-mail !

9 réponses sur “Woocommerce, comment offir un produit après l’ajout d’un code promo ?”

Mandes

Bonjour,
Merci pour ce partage et pour votre travail.
Si je fixe un minimum de 50€ d’achat pour que le code promo soit valable, le produit offert s’ajoute logiquement au panier lorsque le montant de la commande atteint 50€. Le problème est que si j’enlève un produit du panier pour simuler une commande à 40€ une alerte indique bien que le code promo a été désactivé mais le produit gratuit reste dans le panier jusqu’à la validation de la commande. Avez vous une solution ? Merci. Très bonne continuation. Mandes.

    Thomas Dufranne

    Bonjour Mendes, en effet le code que j’avais donné au départ dans l’article était incomplet. Il manquait une partie où le produit gratuit se retire automatiquement lorsque le coupon woocommerce n’est plus présent. Je viens de le mettre à jour l’article et les exemples de code, je vous invite à les tester, je pense qu’il résoudre votre problème. Thomas.

Eric

Bonjour, excellent travail ! Ca marche bien, j’aurais aimé que le code promo s’applique automatiquement lors de l’ajout du produit. Plus besoin de saisir le code promo en somme ! C’est faisable ? Merci.

Marine

Bonjour, j’aimerais savoir s’il est possible de configurer le code promo afin qu’il soit valable que lorsque deux articles sont présents dans le panier et pas en fonction d’un montant minimum d’euros dans le panier.
Merci d’avance pour votre réponse.

Bonjour,

Quand j’essaye d’ajouter le code promo dans le panier, j’ai une erreur  » Désolé, ce produit ne peut être acheté. »
Auriez vous une solution?

Wesley LIBLIN

Bonjour,
merci pour ce code qui marche très bien!

Sirius

Merci pour ce partage de valeur. Mais de mon côté je n’y arrive pas. J’ai bien créé un produit avec un produit téléchargeable. Ajouter le code promo et les lignes de code. Mais rien à faire, ce produit ne s’ajoute pas au panier, et l’option de téléchargement n’est pas disponible après avoir passée la commande.

Repondre

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.