Skip to content

Instantly share code, notes, and snippets.

@mrsize
Created January 6, 2022 17:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mrsize/c4c9ad71d6b4784a9a23f396dc21aefc to your computer and use it in GitHub Desktop.
Save mrsize/c4c9ad71d6b4784a9a23f396dc21aefc to your computer and use it in GitHub Desktop.
<?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