web-dev-qa-db-fra.com

Comment obtenir des informations sur les commandes Woocommerce

J'essaie d'obtenir toutes les commandes de woocommerce et de trouver des informations sur les produits dans chaque commande. J'ai vu de nombreux exemples ici et ailleurs sur le Web et ils semblent tous demander de faire la même chose, mais cela ne fonctionne pas. Je suis sur Wordpress 4.1.1 et Woocommerce 2.3.3, voici mon 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);
    }
}

Le problème est que lorsque je print_r($lineItem), il n’existe que trois propriétés, dont deux n’ont jamais été renseignées. Un print_r($lineItem) typique ressemble à ceci:

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

Comment obtenir le reste des informations sur cet article de commande, par exemple l'ID du produit, s'il s'agit d'un produit simple/variable, etc.

7
geoffs3310

J'ai essayé votre code et cela fonctionne bien et en fait, il donne également les détails de chaque produit dans les commandes. Le code que j'ai essayé

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

Et la sortie que je tire de la même chose.

enter image description here

Essayez ceci et laissez-moi savoir comment cela fonctionne pour vous

6
WisdmLabs