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:
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
Haben Sie diese Lösung versuchen? https://www.clowcreative.com/post/exclude-products-from-coupon-codes-automatisch-at-checkout –