Как отправить каждую итерацию foreach в полезную нагрузку json в PHP - PullRequest
0 голосов
/ 26 мая 2020

Итак, я пытаюсь отправить данные на конечную точку веб-перехватчика. Кажется, я не могу поместить все элементы в foreach l oop в файл json. В моем примере ниже product_name показывает только последнюю итерацию l oop.

Как мне включить все итерации в $ body, отправляемое через wp_remote_post?

add_action( 'woocommerce_payment_complete', 'so_payment_complete' );
function so_payment_complete( $order_id ){  
    $order = wc_get_order( $order_id );
    $user = $order->get_user();
    $order_data = $order->get_data();
    $order_id = $order_data['id'];
    $order_shipping_first_name = $order_data['shipping']['first_name'];
    //$products = wc_order_item_product( $order_id );
    $products = $order->get_items();
    $customer_id = $order->get_shipping_first_name();
    $testTotal = $order_data['shipping']['total'];




    // Iterating through each "line" items in the order
    foreach ($order->get_items() as $item_id => $item_data) {

        // Get an instance of corresponding the WC_Product object
        $product = $item_data->get_product();
        $product_name = $product->get_name(); // Get the product name

        $item_quantity = $item_data->get_quantity(); // Get the item quantity

        $item_total = $item_data->get_total(); // Get the item line total

        // Displaying this data (to check)
        //echo 'Product name: '.$product_name.' | Quantity: '.$item_quantity.' | Item total: '. number_format( $item_total, 2 );
    }


    $url = 'https://example.com'; // post to the request somehow
    //$url = 'https://example.com/; // post to the request somehow

    $body = [
        'order_shipping_first_name' => $order_shipping_first_name,
        'order_shipping_last_name' => $order_data['shipping']['last_name'],
        'order_shipping_company_name' => $order_data['shipping']['company'],
        'order_shipping_address1' => $order_data['shipping']['address_1'],
        'order_shipping_address2' => $order_data['shipping']['address_2'],
        'order_shipping_city' => $order_data['shipping']['city'],
        'order_shipping_state' => $order_data['shipping']['state'],
        'order_shipping_postcode' => $order_data['shipping']['postcode'],
        'order_address'         => $order_address = $order->get_address(),
        'order_note'            => $order_note = $order->get_customer_note(),

        'product_name' => $product_name


        /**'order_items' => $order_items,
        'order_items1' => $item_data,
        'order_items2' => $item_id,
        **/
    ];


    wp_remote_post( $url, array(
        'method' => 'POST',
        'timeout' => 45,
        'redirection' => 5,
        'httpversion' => '1.0',
        'blocking' => true,
        'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
        //'body' => array( 'order' => $order, 'user' => $user, 'order_data' => $order_data, 'order_id' => $order_id, 'order_shipping_first_name' => $order_shipping_first_name),
        'body' => json_encode($body),
        'method'      => 'POST', //added ****
        'cookies' => array()
        )
    );

}

Любая помощь будет очень признательна. Я правда не программист, но, так сказать, ныряю в воду.

...