Plugin Directory

Changeset 2860469


Ignore:
Timestamp:
02/05/2023 06:10:29 PM (3 years ago)
Author:
philsafc
Message:

Plugin update to 1.1
New features to display message to user when adding ineligible items to cart
Now works with variable products

Location:
disable-coupons-at-product-level
Files:
5 added
2 edited

Legend:

Unmodified
Added
Removed
  • disable-coupons-at-product-level/trunk/disable-coupons.php

    r2857355 r2860469  
    33 * Plugin Name: Disable Coupons At Product Level
    44 * Description: A plugin to disable coupons on selected products
    5  * Version:     1.0.1
     5 * Version:     1.1
    66 * Author:      Phil Clerkin
    77 * Author URI:  https://greyphox.com/
     
    4343
    4444
    45 
    4645// Save the checkbox choice and update all excluded product ids in option WP settings
    4746add_action( 'woocommerce_process_product_meta', 'DCAPL_save_custom_field_general_product_fields', 10, 1 );
     
    6261add_filter('woocommerce_coupon_is_valid_for_product', 'DCAPL_set_coupon_validity_for_excluded_products', 12, 4);
    6362function DCAPL_set_coupon_validity_for_excluded_products($valid, $product, $coupon, $values ){
    64 $disabled_products = get_option( 'DCAPL_products_disable_coupons' );
    65 $valid = count( $disabled_products ) > 0 && in_array( $product->get_id(), $disabled_products ) ? false : $valid;
    66 return $valid;
     63    $disabled_products = get_option( 'DCAPL_products_disable_coupons' );
     64    $valid = count( $disabled_products ) > 0 && ( in_array( $product->get_id(), $disabled_products ) || ( $product->get_parent_id() && in_array( $product->get_parent_id(), $disabled_products ) ) ) ? false : $valid;
     65    return $valid;
    6766}
     67
    6868
    6969// Set the discount to zero
    7070add_filter( 'woocommerce_coupon_get_discount_amount', 'DCAPL_zero_discount_for_excluded_products', 12, 5 );
    7171function DCAPL_zero_discount_for_excluded_products($discount, $discounting_amount, $cart_item, $single, $coupon ){
    72 $disabled_products = get_option( 'DCAPL_products_disable_coupons' );
    73 $discount = count( $disabled_products ) > 0 && in_array( $cart_item['product_id'], $disabled_products ) ? 0 : $discount;
    74 return $discount;
     72    $disabled_products = get_option( 'DCAPL_products_disable_coupons' );
     73    $discount = count( $disabled_products ) > 0 && in_array( $cart_item['product_id'], $disabled_products ) ? 0 : $discount;
     74    return $discount;
    7575}
     76
     77
     78add_filter( 'woocommerce_cart_totals_coupon_html', 'DCAPL_add_message_for_ineligible_products', 10, 2 );
     79function DCAPL_add_message_for_ineligible_products( $coupon_html, $coupon ) {
     80    global $woocommerce;
     81    $cart = $woocommerce->cart->get_cart();
     82    $disabled_products = get_option( 'DCAPL_products_disable_coupons' );
     83
     84    $ineligible_items = false;
     85    foreach ( $cart as $cart_item ) {
     86        $ineligible_items = in_array( $cart_item['product_id'], $disabled_products ) ? true : $ineligible_items;
     87    }
     88
     89    return $coupon_html . ( $ineligible_items ? '<small class="not-eligible-message">' . __( 'Some items in your cart are not eligible for this coupon', 'woocommerce' ) . '</small>' : '' );
     90}
     91
    7692
    7793
  • disable-coupons-at-product-level/trunk/readme.txt

    r2857355 r2860469  
    77License: GPLv2 or later
    88License URI: [http://www.gnu.org/licenses/gpl-2.0.html](http://www.gnu.org/licenses/gpl-2.0.html)
    9 Stable tag: 1.0.1
     9Stable tag: 1.1
    1010
    1111A Wordpress plugin that allows users to disable customers use of coupons on selected products in WooCommerce
     
    1616
    1717Particularly useful if you have a large number of coupons as saves having to go through each coupon code and update the rules to exclude certain items.
     18
    1819
    1920== Installation ==
     
    3334
    3435- Fixed: Checkbox field status not saving on product page
     36
     37= 1.1 =
     38
     39- New: Message shows at checkout and cart page to inform user that some or all products in the cart are not eligible for discount
     40- New: Now works with variable products, at parent level
Note: See TracChangeset for help on using the changeset viewer.