3
クーポンコード "XYZ"の使用を、月曜日から木曜日までの定義された平日のみに制限したいと思います。それ以外の日(日曜日から金曜日まで)には、エラー通知が表示されます。WooCommerceクーポンコードを定義された平日に限定する
可能ですか?それをどうすれば実現できますか?ここで
おかげ
クーポンコード "XYZ"の使用を、月曜日から木曜日までの定義された平日のみに制限したいと思います。それ以外の日(日曜日から金曜日まで)には、エラー通知が表示されます。WooCommerceクーポンコードを定義された平日に限定する
可能ですか?それをどうすれば実現できますか?ここで
おかげ
は、あなたの定義された週の日のためのクーポン使用を制限し、クーポンが有効でない場合は、カスタムエラー通知が表示されます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+でテストされています。
コードは制限のためにうまくいきますが、日曜日にクーポン「xyz」を使用しようとしているときにコードから「Sun」を削除しても「coupon not valid」と表示されるエラーが発生します。 –
@ LoicTheAztec;すでに私はコードから 'サン'を削除してみましたが、同じ問題です。「クーポンは有効ではありません」と直面しています。私はwoocommerceの新しい古いバージョンでも試しましたが、問題は同じです。クーポンが1つではありません。 「クーポンは有効ではありません。 この問題を解決するにはどうすればよいですか? –
@RaviShankar **私のコードを更新しました!** ...最初のフックされた関数の末尾に**引数 '$ valid' **を返すのを忘れました(そして、すべての日は短い形式(3文字))。申し訳ありません。もう一度やり直してください。それは動作します... – LoicTheAztec