So erhalten Sie Woocommerce Bestellproduktinformationen

7

Ich versuche, alle Woocommerce-Bestellungen zu erhalten und Informationen zu den Produkten in jeder Bestellung zu finden. Ich habe hier und anderswo im Internet viele Beispiele gesehen, und alle scheinen zu sagen, dass sie dasselbe tun, aber es funktioniert nicht. Ich bin auf Wordpress 4.1.1 und Woocommerce 2.3.3 hier ist mein Code:

$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);
    }
}

Das Problem ist, wenn ich print_r($lineItem)nur drei Eigenschaften habe, von denen nur zwei jemals bevölkert sind. Ein typisches print_r($lineItem)sieht so aus:

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

Wie erhalte ich den Rest der Informationen zu diesem Bestellartikel, z. B. die Produkt-ID, ob es sich um ein einzelnes / variables Produkt usw. Handelt?

geoffs3310
quelle

Antworten:

7

Haben Sie Ihren Code ausprobiert und es funktioniert gut und infact es gibt auch die Details jedes Produkts in den Bestellungen. Der Code, den ich ausprobiert habe

$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>';
        }
    }
}

Und die Ausgabe habe ich von der gleichen bekommen.

Geben Sie hier die Bildbeschreibung ein

Versuchen Sie dies und lassen Sie mich wissen, wie es für Sie funktioniert

WisdmLabs
quelle
es funktioniert, aber es schafft ein Problem, wenn ich versuche, es innerhalb der Klasse zu verwenden. Und wenn ich darauf zugreife, wirft es mich aus. Ausnahme: Ungültige Reihenfolge
Latheesh VM Villa
auch $ loop-> the_post (); ist es erforderlich?
Latheesh VM Villa