Php 限制订单类型以避免在WooCommerce中完成订单时出错

Php 限制订单类型以避免在WooCommerce中完成订单时出错,php,wordpress,woocommerce,types,orders,Php,Wordpress,Woocommerce,Types,Orders,我想根据订单状态显示报告,如果已完成,则显示一些数据 但它适用于所有订单状态,例如,如果我暂停,它会得到数据,但当我完成时,我会得到这个错误 致命错误:调用未定义的方法WC\u Order\u return::get\u Order\u number 这是我的密码 //Get Report for Orders that have status of delivered foreach( $orders as $order ){ if ( $order->get_statu

我想根据订单状态显示报告,如果已完成,则显示一些数据

但它适用于所有订单状态,例如,如果我暂停,它会得到数据,但当我完成时,我会得到这个错误

致命错误:调用未定义的方法WC\u Order\u return::get\u Order\u number

这是我的密码

    //Get Report for Orders that have status of delivered
foreach( $orders as $order ){
    if ( $order->get_status() === 'completed'){
        $order_data = $order->get_data(); // The Order data
        $items = $order->get_items();
        foreach ( $items as $item ) {
            $product_name = $item->get_name();
            $product_id = $item->get_product_id();
        }
        $orders_completed .=  '<tr><td>' . $order->get_order_number() . '</td>' .
        '<td>' . $order->get_date_created()->date('Y-m-d H:i:s') . '</td>' .
        '<td>' . $order->get_status() . '</td>' .
        '<td>' . $order->get_total() . '</td>' .
        '<td>' . $product_id . '</td>' .
        '<td>' . $product_name . '</td>' .
        '<td>' . $order->get_item_count() . '</td>' .
        '<td>' . $order->get_billing_first_name() . '</td>' .
        '<td>' . $order->get_billing_email() . '</td>' .
        '<td>' . $order->get_billing_phone() . '</td>' .
        '<td>' . $order_payment_method = $order_data['payment_method_title'] . '</td></tr>';
    }
}
如果我将“已完成”更改为“保留”或任何其他状态,它将工作并获取数据

但如何使它与已完成的订单一起工作


非常感谢您完成订单列表。您可以使用此

if ($order->payment_complete()){

}

要完成订单列表satuts,您可以使用

if ($order->payment_complete()){

}

问题与订单类型有关,订单类型应为车间订单…有两种方式:

1检查订单类型,该类型需要为店铺订单,但不需要店铺订单退款。因此,您可以使用get_type方法,该方法也适用于WC_订单_退款类,如:

foreach( $orders as $order ){
    if ( $order->get_type() === 'shop_order' && $order->get_status() === 'completed'){
        $order_data = $order->get_data(); // The Order data
        $items = $order->get_items();
        foreach ( $items as $item ) {
            $product_name = $item->get_name();
            $product_id = $item->get_product_id();
        }
        $orders_completed .=  '<tr><td>' . $order->get_order_number() . '</td>' .
        '<td>' . $order->get_date_created()->date('Y-m-d H:i:s') . '</td>' .
        '<td>' . $order->get_status() . '</td>' .
        '<td>' . $order->get_total() . '</td>' .
        '<td>' . $product_id . '</td>' .
        '<td>' . $product_name . '</td>' .
        '<td>' . $order->get_item_count() . '</td>' .
        '<td>' . $order->get_billing_first_name() . '</td>' .
        '<td>' . $order->get_billing_email() . '</td>' .
        '<td>' . $order->get_billing_phone() . '</td>' .
        '<td>' . $order_payment_method = $order_data['payment_method_title'] . '</td></tr>';
    }
};

这两种方法都可以避免出现此致命错误

问题与应为“车间订单”的订单类型有关…有两种方法:

1检查订单类型,该类型需要为店铺订单,但不需要店铺订单退款。因此,您可以使用get_type方法,该方法也适用于WC_订单_退款类,如:

foreach( $orders as $order ){
    if ( $order->get_type() === 'shop_order' && $order->get_status() === 'completed'){
        $order_data = $order->get_data(); // The Order data
        $items = $order->get_items();
        foreach ( $items as $item ) {
            $product_name = $item->get_name();
            $product_id = $item->get_product_id();
        }
        $orders_completed .=  '<tr><td>' . $order->get_order_number() . '</td>' .
        '<td>' . $order->get_date_created()->date('Y-m-d H:i:s') . '</td>' .
        '<td>' . $order->get_status() . '</td>' .
        '<td>' . $order->get_total() . '</td>' .
        '<td>' . $product_id . '</td>' .
        '<td>' . $product_name . '</td>' .
        '<td>' . $order->get_item_count() . '</td>' .
        '<td>' . $order->get_billing_first_name() . '</td>' .
        '<td>' . $order->get_billing_email() . '</td>' .
        '<td>' . $order->get_billing_phone() . '</td>' .
        '<td>' . $order_payment_method = $order_data['payment_method_title'] . '</td></tr>';
    }
};

两种方法都可以避免出现这个致命错误

谢谢你的回答,但我仍然得到了>错误:调用未定义的方法WC\u Order\u return::payment\u complete您的WooCommerce版本?最新版本DFDY您正在使用这个$Order=WC\u get\u Order$Order\u id;要获取订单列表?我使用$orders=wc\u get\u orders数组'numberposts'=>-1;获取所有订单谢谢您的回答,但我仍然得到>错误:调用未定义的方法WC\u Order\u return::payment\u complete您的WooCommerce版本?最新版本DFDY您正在使用此$Order=WC\u get\u Order$Order\u id;要获取订单列表?我使用$orders=wc\u get\u orders数组'numberposts'=>-1;得到所有的订单总是最好的答案。问题解决了,非常感谢,总是最好的答案。问题解决了,非常感谢