2017-12-01 1 views
0

Ich habe überall im Internet gesucht, aber es scheint keine Antwort irgendwo trotz der unzähligen Leute zu geben, die die Frage stellen.Produkt von allen Gutscheinen in WooCommerce ausschließen

Gibt es eine Möglichkeit, ein bestimmtes Produkt von ALLEN Coupons auszuschließen?

Ich verstehe, dass Sie es auf Coupon Ebene tun können, aber das ist ziemlich chaotisch zumal viele Leute automatische Coupons haben, mehr Menschen Coupons etc ... und

TLDR: Jede Art und Weise, ein Produkt herzustellen ausgeschlossen von allen Gutscheinen auf Produktebene.

+0

Haben Sie diese Lösung versuchen? https://www.clowcreative.com/post/exclude-products-from-coupon-codes-automatisch-at-checkout –

Antwort

2

Hier ist eine gute Möglichkeit, diesen Prozess zu automatisieren.

1) Wir fügen ein benutzerdefiniertes Kontrollkästchen in den allgemeinen Einstellungen des Produkts metabox hinzu, um die Gutscheinfunktionalität für das aktuelle Produkt zu deaktivieren. So finden Sie sich im Backend bearbeiten Produktseiten erhalten:

custom checkbox in product general settings metabox

Alle ausgewählten Produkte werden in einem Array gespeichert wird und wird in folgenden Fällen nicht verwendet werden ...

2) Diese ausgewählten Produkte ausgeschlossen werden Gutschein Rabatt auf Produktebene und der Produkt Rabatt Betrag wird auf Null gesetzt.


Der Code:

// Create and display the custom field in product general setting tab 
add_action('woocommerce_product_options_general_product_data', 'add_custom_field_general_product_fields'); 
function add_custom_field_general_product_fields(){ 
    global $post; 

    echo '<div class="product_custom_field">'; 

    // Custom Product Checkbox Field 
    woocommerce_wp_checkbox(array(
     'id'  => '_disabled_for_coupons', 
     'desc'  => __('Disable this products from coupon discounts', 'woocommerce'), 
     'label'  => __('Disabled for coupons', 'woocommerce'), 
     'desc_tip' => 'true', 
    )); 

    echo '</div>';; 
} 

// Save the custom field and update all excluded product Ids in option WP settings 
add_action('woocommerce_process_product_meta', 'save_custom_field_general_product_fields', 10, 1); 
function save_custom_field_general_product_fields($post_id){ 

    $current_disabled = isset($_POST['_disabled_for_coupons']) ? 'yes' : 'no'; 

    $disabled_products = get_option('_products_disabled_for_coupons'); 
    if(empty($disabled_products)) { 
     if($current_disabled == 'yes') 
      $disabled_products = array($post_id); 
    } else { 
     if($current_disabled == 'yes') { 
      $disabled_products[] = $post_id; 
      $disabled_products = array_unique($disabled_products); 
     } else { 
      if (($key = array_search($post_id, $disabled_products)) !== false) 
       unset($disabled_products[$key]); 
     } 
    } 

    update_post_meta($post_id, '_disabled_for_coupons', $current_disabled); 
    update_option('_products_disabled_for_coupons', $disabled_products); 
} 

// Make coupons invalid at product level 
add_filter('woocommerce_coupon_is_valid_for_product', 'set_coupon_validity_for_excluded_products', 12, 4); 
function set_coupon_validity_for_excluded_products($valid, $product, $coupon, $values){ 
    if(! count(get_option('_products_disabled_for_coupons')) > 0) return $valid; 

    $disabled_products = get_option('_products_disabled_for_coupons'); 
    if(in_array($product->get_id(), $disabled_products)) 
     $valid = false; 

    return $valid; 
} 

// Set the product discount amount to zero 
add_filter('woocommerce_coupon_get_discount_amount', 'zero_discount_for_excluded_products', 12, 5); 
function zero_discount_for_excluded_products($discount, $discounting_amount, $cart_item, $single, $coupon){ 
    if(! count(get_option('_products_disabled_for_coupons')) > 0) return $discount; 

    $disabled_products = get_option('_products_disabled_for_coupons'); 
    if(in_array($cart_item['product_id'], $disabled_products)) 
     $discount = 0; 

    return $discount; 
} 

-Code geht in function.php Datei Ihres aktiven Kind Thema (oder aktives Thema) oder in einer Plugin-Datei.

Getestet und funktioniert perfekt

Verwandte Themen