web-dev-qa-db-ja.com

Woocommerce注文商品情報を取得する方法

私はすべてのwoocommerce注文を取得し、各注文の商品に関する情報を見つけることを試みています。私はウェブ上の他の場所で多くの例を見ました、そして、それらはすべて同じことをするように言うようですが、それはうまくいきません。私はWordpress 4.1.1とWoocommerce 2.3.3を使っています。これが私のコードです。

$filters = array(
    'post_status' => 'any',
    'post_type' => 'shop_order',
    'posts_per_page' => 200,
    'paged' => 1,
    'orderby' =>'modified',
    'order' => 'ASC'
);

$loop = new WP_Query( $filters );

while ( $loop->have_posts() ) {
    $loop->the_post();
    $order = new WC_Order($loop->post->ID);

    foreach ($order->get_items() as $key => $lineItem) {
        print_r($lineItem);
    }
}

問題は、私がprint_r($lineItem)したときにたった2つのプロパティしかない3つのプロパティしかない場合です。典型的なprint_r($lineItem)はこのようになります:

Array ( 
    [name] => Fouta Towel – Pearl Grey & White Stripe 
    [type] => line_item 
    [item_meta] => 
)

この注文商品に関する残りの情報(商品ID、単一商品か可変商品かなど)を取得するにはどうすればよいですか。

7
geoffs3310

あなたのコードを試してみました、そしてそれはうまく働きます、そしてそれは注文の中でそれぞれの製品の詳細も与えます。私が試したコード

$filters = array(
    'post_status' => 'any',
    'post_type' => 'shop_order',
    'posts_per_page' => 200,
    'paged' => 1,
    'orderby' => 'modified',
    'order' => 'ASC'
);

$loop = new WP_Query($filters);

while ($loop->have_posts()) {
    $loop->the_post();
    $order = new WC_Order($loop->post->ID);

    foreach ($order->get_items() as $key => $lineItem) {

        //uncomment the following to see the full data
        //        echo '<pre>';
        //        print_r($lineItem);
        //        echo '</pre>';
        echo '<br>' . 'Product Name : ' . $lineItem['name'] . '<br>';
        echo 'Product ID : ' . $lineItem['product_id'] . '<br>';
        if ($lineItem['variation_id']) {
            echo 'Product Type : Variable Product' . '<br>';
        } else {
            echo 'Product Type : Simple Product' . '<br>';
        }
    }
}

そして私が同じから得た出力。

enter image description here

これを試して、それがあなたにとってどのように機能するのか教えてください

6
WisdmLabs