周末限制使用优惠券

时间:2018-05-08 14:10:39

标签: php wordpress woocommerce coupon woocommerce-bookings

我正在使用woocommerce预订,我需要为预订生成优惠券限制。

我所有预订的持续时间均为一小时,客户可以使用优惠券来降低预订成本,但我需要在使用预订的当天限制使用优惠券,而不是使用优惠券。预订生成。

例如,我有一张优惠券,我在星期一的星期一预订房间,在这种情况下,优惠券一定不好。但是,如果我试着在下周一的任何一天预订房间,那么优惠券必须是好的。

在这种情况下,我需要限制周末的使用。

到目前为止,我的代码是:

add_filter( 'woocommerce_coupon_is_valid', 'coupon_week_days_check', 10, 2);
 function coupon_week_days_check( $valid, $coupon ) {

     // Set HERE your coupon slug   <===  <===  <===  <===  <===  <===  <===  <===  <===  <===
     $coupon_code_wd = 'couponyes';
     // Set HERE your defined invalid days (others: 'Mon', 'Tue', 'Wed', 'Thu', 'Fri' )  <===  <===
     $invalid_days = array( 'Sat', 'Sun');

     $now_day = date ( 'D' ); // Now day in short format

     // WooCommerce version compatibility
     if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
         $coupon_code = strtolower($coupon->code); // Older than 3.0
     } else {
         $coupon_code = strtolower($coupon->get_code()); // 3.0+
     }

     // When 'xyz' is set and if is not a week day we remove coupon and we display a notice
     if( $coupon_code_wd == $coupon_code && in_array($now_day, $invalid_days) ){
         // if not a week day
         $valid = false;
     }
     return $valid;
 }

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在添加到购物车操作时,您需要一个针对预订“开始日期”的略微不同的代码。所以试试这个:

// Utility function to check coupon code 'abcxxr'
function check_coupon_code( $coupon ){
    // Set HERE your coupon slug
    $coupon_code_wd = 'abcxxr';

    $coupon_code = strtolower($coupon->get_code()); // WC 3.0+
    $coupon_code_wd = strtolower($coupon_code_wd);
    $found = false;

    // Loop through cart items to get the chosen day and check it
    foreach( WC()->cart->get_cart() as $cart_item ){
        if( $coupon_code_wd == $coupon_code && isset( $cart_item['booking']['_date'] ) ){
            $the_day = date('D' , strtotime($cart_item['booking']['_date']));
            if( in_array( $the_day, array('Sat', 'Sun') ) ){
                $found = true;
            }
        }
    }
    return $found;
}

// Coupon validity checking
add_filter( 'woocommerce_coupon_is_valid', 'coupon_week_days_check', 10, 2);
function coupon_week_days_check( $valid, $coupon ) {
    if( check_coupon_code( $coupon ) ){
        $valid = false;
    }
    return $valid;
}

// Coupon validity checking error message
add_filter('woocommerce_coupon_error', 'coupon_week_days_error_message', 10, 3);
function coupon_week_days_error_message( $err, $err_code, $coupon ) {
    if( intval($err_code) === WC_COUPON::E_WC_COUPON_INVALID_FILTERED && check_coupon_code( $coupon ) ) {
        $err = __( "This coupon $coupon_code_wd is valid for week days only…", "woocommerce" );
    }
    return $err;
}

代码放在活动子主题(或活动主题)的function.php文件中。经过测试和工作。