2017-05-14 7 views

答えて

5

は、あなたの定義された週の日のためのクーポン使用を制限し、クーポンが有効でない場合は、カスタムエラー通知が表示されます2つの引っ掛かっ機能を備えた完全なソリューションです。

1) "定義された日" クーポン妥当性チェック:

add_filter('woocommerce_coupon_error', 'coupon_week_days_error_message', 10, 3); 
function coupon_week_days_error_message($err, $err_code, $coupon) { 

    // Set HERE your coupon slug <=== <=== <=== <=== <=== <=== <=== <=== <=== <=== 
    $coupon_code_wd = 'xyz'; 
    // Set HERE your defined invalid days (others: 'Mon', 'Tue', 'Wed' and 'Thu') <=== <=== 
    $invalid_days = array('Fri', '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+ 
    } 

    if($coupon_code_wd == $coupon_code && intval($err_code) === WC_COUPON::E_WC_COUPON_INVALID_FILTERED && in_array($now_day, $invalid_days)) { 
     $err = __("Coupon $coupon_code_wd only works on weekdays and has been removed", "woocommerce"); 
    } 
    return $err; 
} 

コード機能で行く:有効ではありませんが場合、 "定義された日" クーポンのカスタムエラーメッセージを表示する

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 = 'xyz'; 
    // Set HERE your defined invalid days (others: 'Mon', 'Tue', 'Wed' and 'Thu') <=== <=== 
    $invalid_days = array('Fri', '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; 
} 

2)。あなたのアクティブな子テーマ(またはテーマ)の、または任意のプラグインファイルのphpファイル。

このワーキングコードは、WooCommerceバージョン2.6.xおよび3.0+でテストされています。

+0

コードは制限のためにうまくいきますが、日曜日にクーポン「xyz」を使用しようとしているときにコードから「Sun」を削除しても「coupon not valid」と表示されるエラーが発生します。 –

+0

@ LoicTheAztec;すでに私はコードから 'サン'を削除してみましたが、同じ問題です。「クーポンは有効ではありません」と直面しています。私はwoocommerceの新しい古いバージョンでも試しましたが、問題は同じです。クーポンが1つではありません。 「クーポンは有効ではありません。 この問題を解決するにはどうすればよいですか? –

+0

@RaviShankar **私のコードを更新しました!** ...最初のフックされた関数の末尾に**引数 '$ valid' **を返すのを忘れました(そして、すべての日は短い形式(3文字))。申し訳ありません。もう一度やり直してください。それは動作します... – LoicTheAztec

関連する問題