【发布时间】:2024-10-29 21:00:01
【问题描述】:
我想限制优惠券代码“XYZ”的使用仅限于指定的工作日,仅限周一至周四。对于其他日子(周五至周日),它会显示错误通知。
有可能吗?我怎样才能做到这一点?
谢谢
【问题讨论】:
标签: php wordpress woocommerce cart coupon
我想限制优惠券代码“XYZ”的使用仅限于指定的工作日,仅限周一至周四。对于其他日子(周五至周日),它会显示错误通知。
有可能吗?我怎样才能做到这一点?
谢谢
【问题讨论】:
标签: php wordpress woocommerce cart coupon
这是一个完整的解决方案,其中包含 2 个挂钩功能,这些功能将在您定义的工作日限制优惠券的使用,如果优惠券无效,将显示自定义错误通知。
1) 检查“指定天数”优惠券有效期:
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) 如果无效,则显示“定义天数”优惠券的自定义错误消息:
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;
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件中。
此工作代码已在 WooCommerce 版本 2.6.x 和 3.0+ 上测试。
【讨论】:
$valid 参数(以及所有天必须以短格式(3 个字符)的大写字母开头)。那不好意思了。请再试一次它有效...