Created
January 6, 2022 17:35
-
-
Save mrsize/c4c9ad71d6b4784a9a23f396dc21aefc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Configuration : | |
function mrsize_produit_gratuit_coupon_nom(){ | |
return 'premierefois'; // Titre du coupon | |
} | |
function mrsize_produit_gratuit_id(){ | |
return 825; // ID du produit gratuit | |
} | |
// 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 ); | |
} | |
} | |
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 ){ | |
// on verifie que le coupon appliqué = coupon du 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 ); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Merci