小编Hug*_*280的帖子

WooCommerce 按到期日期和时间验证优惠券

我正在使用 woocommerce,我想不仅通过默认的内置到期日期检查来验证优惠券,还想验证到期时间。

我为优惠券添加了一个自定义字段,允许设置到期时间。

我编写了以下代码片段以覆盖validate_coupon_expiry_date类 WC_Discounts 中的默认方法:

  class WC_My_plugin_Discounts extends WC_Discounts
  {
    // override validate_coupon_expiry_date to include expiry time:
    protected function validate_coupon_expiry_date($coupon)
    {
      $expiry_date = date('Y-m-d', $coupon->get_date_expires()->getTimestamp());
      // I add a custom field `expiry_time` in postmeta table:
      $expiry_time = $coupon->get_meta('expiry_time');

      $dateTime = new DateTime($expiry_date . $expiry_time);

      if ($coupon->get_date_expires() && apply_filters('woocommerce_coupon_validate_expiry_date', time() > $dateTime, $coupon, $this)) {
        throw new Exception(__('This coupon has expired.', 'woocommerce'), 107);
      }

      return true;
    }
   }
Run Code Online (Sandbox Code Playgroud)

然后,我尝试使用以下代码段验证优惠券:

add_filter('woocommerce_coupon_is_valid', array($this, 'validate_coupon'), 15, 2);
function validate_coupon($valid, $coupon)
{ …
Run Code Online (Sandbox Code Playgroud)

php wordpress custom-fields coupon woocommerce

5
推荐指数
1
解决办法
483
查看次数

标签 统计

coupon ×1

custom-fields ×1

php ×1

woocommerce ×1

wordpress ×1