Ich möchte ein Skript erstellen, um automatisch ein Bonusprodukt zum WooCommerce-Einkaufswagen hinzuzufügen.WooCommerce - Bonus-Produkt automatisch hinzufügen
Das Bonusprodukt würde in den Warenkorb hinzugefügt, wenn ein bestimmtes Produkt hinzugefügt wird. Aber ich habe noch nie einen verbesserten und voll funktionierenden Code mit Funktionen gesehen - wie das automatische Entfernen des Bonuselements oder das Entfernen des/der Primärprodukte aus dem Einkaufswagen.
In dieser Lösung habe ich mit dem Code unten kommen, die folgende Merkmale aufweist:
- Optionen
- Mehrere erforderlichen Produkte
- Automatisches Hinzufügen
- Automatische entfernen (wenn es keine ist gewünschtes Produkt im Warenkorb)
function bonus_product() {
if (is_admin()) return;
//## OPTIONS
$options = (object) array(
'bonus_product_id' => 1891, //bonus product to add
'required_products_id' => array(1873), //at least on of the specific product(s) needs to be represented in the cart
);
//function variables
$cart_items = WC()->cart->get_cart();
$bonus_product_found = false;
$required_product_found = false;
//check if the cart is not empty
if(sizeof($cart_items) > 0) {
//checking for required products. loop through the cart items
foreach ($cart_items as $key => $item) {
//bonus product already in the cart?
if($item['product_id'] == $options->bonus_product_id) {
$bonus_product_found = true;
}
//one of required products in the cart?
if(in_array($item['product_id'], $options->required_products_id)) {
$required_product_found = true;
}
}
//adding/removing bonus product
//add bonus product to the cart
if(!$bonus_product_found && $required_product_found) {
WC()->cart->add_to_cart($options->bonus_product_id);
}
//remove bonus product from the cart if none of required items is in the cart
if($bonus_product_found && !$required_product_found) {
$cart = WC()->instance()->cart;
$cart_id = $cart->generate_cart_id($options->bonus_product_id);
$cart_item_id = $cart->find_product_in_cart($cart_id);
$cart->set_quantity($cart_item_id, 0);
}
}
}
add_action('init', 'bonus_product');
Vielen Dank. Es ist toll! –
@the_ousek Wenn es funktioniert, bitte akzeptieren Sie die Antwort. – Sark