Skip to content

Instantly share code, notes, and snippets.

@Antoinebr
Last active October 18, 2015 11:37
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 Antoinebr/267e098ae62251b837c2 to your computer and use it in GitHub Desktop.
Save Antoinebr/267e098ae62251b837c2 to your computer and use it in GitHub Desktop.
WooCommerce product Gift
<?php
function promo_product($productPromoID,$minItemBuy,$minPriceBuy){
$productPromo = get_product($productPromoID);
// On vérifie si le produit à ofrir est en stock
if($productPromo->stock == 0 || $productPromo->stock < 0){
define('PROMO', false);return false;
}else{
define('PROMO', true);
}
global $woocommerce;
// On regarde si le produit à offrir est déja dans le panier
foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
if( $productPromoID == $_product->id ) {
$tools = true;
}
}
// on récupère le nombre de produits dans le panier
$nbItems = WC()->cart->get_cart_contents_count();
// on récupère le prix total du panier
$prix = WC()->cart->cart_contents_total;
// on verifie si les conditions (minimum produits ) (minimum prix ) (outil pas déjà dans le panuer)
if( $nbItems > $minItemBuy && $prix >= $minPriceBuy && !isset($tools)){
WC()->cart->add_to_cart($productPromoID,1);
}elseif( $nbItems == $minItemBuy && $prix < $minPriceBuy && $tools == true){
// Si le produit est dans le panier mais la condition n'est plus remplie
$cart = WC()->instance()->cart;
$cart_id = $cart->generate_cart_id($productPromoID);
$cart_item_id = $cart->find_product_in_cart($cart_id);
// On supprime le cadeau
if($cart_item_id){
$cart->set_quantity($cart_item_id,0);
}
}elseif($nbItems < $minItemBuy && $nbItems > 0 ){
// Si la conditions n'est pas remplie alors on affiche un message
echo "<div class='woocommerce-message promo-outil-msg'>Achetez un produit supplémentaire pour obtenir un produit gratuit !</div>";
}
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment