通过 URL 添加 WooCommerce 优惠券

Add WooCommerce coupon through URL

我在使用优惠券时遇到了问题。下面的代码可以工作,除非用户是第一次访问该站点并且尚未将任何内容添加到购物车。我需要清除缓存才能重现此错误。

function process_url()
{
    if( empty($_GET['coupon']) )
        return;

    // Add the discount.
    global $woocommerce;
    $result = $woocommerce->cart->add_discount($_GET['coupon']);
}
add_action('init', 'process_url');

我是不是做错了什么?

显然,如果您使用优惠券,则不会存储用户会话。您需要先添加产品或执行其他操作来存储您的会话。不过,我们可以手动完成,即我们自己创建会话 cookie。

if( !WC()->session->has_session() )
    WC()->session->set_customer_session_cookie(true);

花了我一整天。希望有人能够使用它。