"WC_Abstract_Legacy_Order->__get, wc_doing_it_wrong" WooCommerce 错误

"WC_Abstract_Legacy_Order->__get, wc_doing_it_wrong" WooCommerce error

我的函数导致错误 «WC_Abstract_Legacy_Order->__get, wc_doing_it_wrong»。我已经了解了同样的问题,但仍然找不到我的函数中错误调用的位置,请帮助。

Woocommerce 4.3.

函数如下:

add_action( 'init', 'loyal_customer_auto_coupon', 10, 1);

function loyal_customer_auto_coupon(){
    
    if ( is_user_logged_in() ) {
        
        $customer = get_current_user_id();
        $acf_user = 'user_' . $customer;
        $loyal = get_field('loyal_customer_coupon', $acf_user); 

        if ($loyal == '') {
            $all_orders = wc_get_customer_order_count( $customer );

            if ( $all_orders > 4 ) {
                $args = array(
                    'customer_id' => $customer
                );
                $orders = wc_get_orders($args);

                $completed_order_count = 0;
                foreach ($orders as $order) {
                    if ( $order->status == 'completed' ) {
                        if ( $order->total > 14.99 ) {
                            $completed_order_count++;
                        }
                    }
                }
            }
        }
    }
}

由于无法直接访问 WooCommerce 3 对象属性,因此您将使用 WC_Order 方法。所以在你的代码中,替换

  • $order->status 来自 $order->get_status()
  • $order->total 来自 $order->get_total()

它应该可以解决您的问题。