Search code examples
phpwordpresswoocommerceorderscoupon

WooCoomerce WC_Abstract_Order::get_coupon_codes PHP Fatal Error


I'm trying to use new WC_Abstract_Order::get_coupon_codes() methods to get coupon codes in an order. This was the previous working snippet:

$coupons = $order->get_used_coupons();

$nCoupons = count($coupons);
            if($nCoupons == 1)
                $descrizioneCoupon = 'Coupon ' . $coupons[0];
            else if($nCoupons > 1)
            {
                $descrizioneCoupon = 'Coupons ';
                for($i=0;$i<$nCoupons;$i++)
                {
                    $descrizioneCoupon .= $coupons[$i];
                    if($i<$nCoupons-1)
                    {
                        $descrizioneCoupon .= ', ';
                    }
                }
            }

So I'm trying to replace the first line with this one:

$coupons = \WC_Abstract_Order::get_coupon_codes(); 

I'm doing this since get_used_coupons() is deprecated.

As a result I get this error message:

Fatal error: Uncaught Error: Using $this when not in object context ...

Any suggestions? Thanks


Solution

  • The solution here is simply to replace:

    $coupons = $order->get_used_coupons();
    // OR: 
    // $coupons = \WC_Abstract_Order::get_coupon_codes();
    

    by:

    $order->get_coupon_codes();
    

    Don't use \WC_Abstract_Order, always use the WC_Order instance object $order