我目前在payment_complete钩子中创建优惠券时遇到了一些问题。
add_action('woocommerce_payment_complete', 'when_payment_complete');
function when_payment_complete( $order_id ) {
$referral_coupon = new WC_Coupon();
$bytes = random_bytes(8);
$encoded = base64_encode($bytes);
$stripped = str_replace(['=', '+', '/'], '', $encoded);
$stripped = strtoupper($stripped);
$prefix = strtoupper(substr(md5($user->user_email), 0, 3));
$referral_coupon->set_code( 'CHILO-REF-' . $prefix . $stripped );
$referral_coupon->set_description( 'TEST REFERRAL COUPON' );
$referral_coupon->set_discount_type( 'fixed_cart' );
$referral_coupon->set_amount( 50 );
$referral_coupon->set_status( "publish" );
$referral_coupon->set_individual_use(false);
$referral_coupon->set_usage_limit( 0 );
$referral_coupon->save();
}
字符串
同样的代码块被用在wordpress脚本中,并且工作得很好。
我不知道为什么优惠券从来没有被创造出来
1条答案
按热度按时间nr9pn0ug1#
在你的代码中,
$user
没有定义,$user->user_email
可以替换为订单中的账单电子邮件。所以可以尝试:字符串
代码放在你的子主题的functions.php文件中(或者插件中)。它可以工作。
如果它不起作用,你可以做的是使用
woocommerce_payment_complete
钩子的替代方法,目标是支付订单状态,并在创建优惠券时标记订单 (避免创建多个优惠券):型
代码放在你的子主题的functions.php文件中(或者插件中)。它应该可以工作。