Как я могу получить плату за заказ из существующего цикла foreach и использовать ее в качестве аргумента в WooCommerce

#php #wordpress #woocommerce #orders #fee

Вопрос:

Поскольку у меня уже есть доступ к идентификатору заказа и списку заказов, как я могу получить доступ к плате за каждый заказ с каждого заказа?

У меня есть следующее, но где и как я могу вставить это в свой существующий код, чтобы добавить его в качестве $orderList индекса?

 foreach( $orderID->get_items('fee') as $item_id => $item_fee ){

    // fee name
    $fee_name = $item_fee->get_name();

    // fee total amount
    $fee_total = $item_fee->get_total();

    // fee total tax amount
    $fee_total_tax = $item_fee->get_total_tax();
}
 

Мне нужно, чтобы я мог использовать вышесказанное с приведенным ниже кодом.

 function GetOrderList() {

    $query = new WC_Order_Query( array(
    'limit' => 100,
    'orderby' => 'date',
    'order' => 'DESC',
    'return' => 'ids',
    ) );

    $orders = $query->get_orders();

    $orderList = array();

        $index = 0;

        foreach ( $orders as $orderID ) {
            
            $order = new WC_Order($orderID);
            
            $order_data = $order->get_data();
            
            $orderList[$index]['order_id'] = $orderID;
            $orderList[$index]['name'] = $order->get_billing_first_name().' '.$order->get_billing_last_name();
            $orderList[$index]['email'] = $order->get_billing_email();
            $orderList[$index]['phone'] = $order->get_billing_phone();
            $orderList[$index]['note'] = $order->get_customer_note();
            $orderList[$index]['order_status'] = $order->get_status();
            $orderList[$index]['total_price'] = $order->get_total();
            // how do I get this to work?
            $orderList[$index]['fee'] = $order->$fee_total;
        
            $index  ;
        }

    return $orderList;
}
 

Ответ №1:

Я немного изменил ваш код.

Чтобы добавить данные о плате в массив, возвращаемый вашей пользовательской функцией, вы можете использовать:

 function get_order_list() { 
    // Get 100 most recent order objects in date descending order.
    $orders = wc_get_orders( array(
        'limit' => 100,
        'orderby' => 'date',
        'order' => 'DESC',
        'return' => 'objects',
    ));
    
    $order_list = array();
    
    $index = 0;
    
    // NOT empty
    if ( sizeof( $orders ) > 0 ) {
        // Iterating through each order
        foreach ( $orders as $order ) {
            // Get order details
            $order_list[$index]['order_id'] = $order->get_id();
            $order_list[$index]['name'] = $order->get_billing_first_name() . ' ' . $order->get_billing_last_name();
            $order_list[$index]['email'] = $order->get_billing_email();
            $order_list[$index]['phone'] = $order->get_billing_phone();
            $order_list[$index]['note'] = $order->get_customer_note();
            $order_list[$index]['order_status'] = $order->get_status();
            $order_list[$index]['total_price'] = $order->get_total();
            
            $indexx = 0;

            // Iterating through order fee items
            foreach( $order->get_items('fee') as $item_id => $item_fee ) {
                // Fee name
                $order_list[$index][$indexx]['item_fee_name'] = $item_fee->get_name();

                // Fee total amount
                $order_list[$index][$indexx]['item_fee_amount'] = $item_fee->get_total();

                // Fee total tax amount
                $order_list[$index][$indexx]['item_fee_total_tax'] = $item_fee->get_total_tax();
                
                $indexx  ;
            }
            
            $index  ;
        }
    }

    return $order_list;
}
 

Результат:

 $result = get_order_list();

echo '<pre>', print_r( $result, 1 ), '</pre>';