Es gibt keine Option zur automatischen Anwendung von Gutscheinen, wenn sich ein bestimmtes Produkt standardmäßig im WooCommerce-Warenkorb befindet.
Es ist jedoch möglich, dies mit etwas benutzerdefiniertem Code zu tun.
Hier ist ein Beispiel, das eine Option zu Ihren Gutscheineinstellungen hinzufügt, um ein Produkt auszuwählen, das mit diesem Gutschein verknüpft werden soll. Wenn das Produkt in den Warenkorb gelegt wird, wird auch der Gutschein angewendet.
/**
* Hinzufügen der Option "Auto-Apply When Product In Cart" zu den WooCommerce Coupon-Einstellungen.
*/
function wcusage1_add_coupon_auto_apply_option($coupon_id, $coupon) {
woocommerce_wp_select(array(
'id' => 'auto_apply_product',
label' => __('Auto-Apply When Product In Cart', 'woocommerce'),
'description' => __('Wählen Sie ein Produkt aus, um die automatische Coupon-Anwendung auszulösen.', 'woocommerce'),
'desc_tip' => true,
options' => wcusage1_get_product_dropdown_options(),
value' => get_post_meta($coupon_id, 'auto_apply_product', true),
));
?>
'veröffentlichen',
'limit' => -1,
'return' => 'objects',
));
$options = array('' => __('None', 'woocommerce'));
foreach ($products as $product) {
$options[$product->get_id()] = $product->get_name();
}
return $options;
}
/**
* Automatische Anwendung von Gutscheinen, wenn sich ein passendes Produkt im Warenkorb befindet.
*/
function wcusage1_auto_apply_coupon() {
if (is_admin() && !defined('DOING_AJAX')) {
return;
}
$cart = WC()->cart;
$cart_product_ids = array();
// Alle Produkt-IDs im Warenkorb abrufen
foreach ($cart->get_cart() as $cart_item) {
$cart_product_ids[] = $cart_item['product_id'];
}
// Alle Gutscheine mit dem eingestellten Auto-Apply-Produkt abrufen
$args = array(
'post_type' => 'shop_coupon',
'post_status' => 'publish',
'posts_per_page' => -1,
);
$coupons = get_posts($args);
foreach ($coupons as $coupon) {
$coupon_code = $coupon->post_title;
$auto_apply_product = get_post_meta($coupon->ID, 'auto_apply_product', true);
// Prüfen, ob sich das Produkt im Warenkorb befindet
if ($auto_apply_product && in_array($auto_apply_product, $cart_product_ids)) {
if (!$cart->has_discount($coupon_code)) {
$cart->apply_coupon($coupon_code);
}
}
}
}
add_action('woocommerce_before_calculate_totals', 'wcusage1_auto_apply_coupon');
/**
* Entferne automatisch angewandten Gutschein, wenn das entsprechende Produkt aus dem Warenkorb entfernt wird.
*/
function wcusage1_remove_auto_applied_coupon($cart_item_key) {
$cart = WC()->cart;
$cart_product_ids = array();
// Alle Produkt-IDs im Warenkorb abrufen
foreach ($cart->get_cart() as $cart_item) {
$cart_product_ids[] = $cart_item['product_id'];
}
// Alle Gutscheine mit dem eingestellten Auto-Apply-Produkt abrufen
$args = array(
'post_type' => 'shop_coupon',
'post_status' => 'publish',
'posts_per_page' => -1,
);
$coupons = get_posts($args);
foreach ($coupons as $coupon) {
$coupon_code = $coupon->post_title;
$auto_apply_product = get_post_meta($coupon->ID, 'auto_apply_product', true);
// Prüfen, ob sich das Produkt im Warenkorb befindet
if ($auto_apply_product && !in_array($auto_apply_product, $cart_product_ids)) {
if ($cart->has_discount($coupon_code)) {
$cart->remove_coupon($coupon_code);
}
}
}
}
add_action('woocommerce_cart_item_removed', 'wcusage1_remove_auto_applied_coupon');
Der Code ist möglicherweise nicht 100% vollständig oder richtig getestet. Bitte stellen Sie sicher, dass Sie Ihre eigenen Tests durchführen und Backups der Website erstellen, bevor Sie den benutzerdefinierten Code verwenden.