Obtenir l'ID de produit de l'ID de commande dans Woocommerce [fermé]

34

Je rencontre des problèmes avec les détails des produits Woocommerce et les détails des commandes. Je ne parviens pas à trouver l'ID de produit d'un ID de commande associé sur la page Afficher les commandes du thème Woocommerce. Je souhaite simplement que le contenu du produit et le lien permanent, etc., figurent sur la page Afficher les commandes .

J'ai essayé de chercher dans wp_postmeta mais je n'ai pas eu de chance.

    
posée arslaan ejaz 25.04.2013 - 09:57

2 réponses

64

WooCommerce 3.0 +

vous pouvez obtenir les articles d'une commande par

$order = wc_get_order( $order_id );
$items = $order->get_items();

alors si vous parcourez les éléments, vous pouvez obtenir toutes les données pertinentes:

foreach ( $items as $item ) {
    $product_name = $item->get_name();
    $product_id = $item->get_product_id();
    $product_variation_id = $item->get_variation_id();
}

Un bon conseil est de vérifier comment les pages de commande de l'administrateur obtiennent les données, vous y trouverez de nombreuses réponses!

Pré-WooCommerce 3.0

$order = new WC_Order( $order_id );
$items = $order->get_items();
foreach ( $items as $item ) {
    $product_name = $item['name'];
    $product_id = $item['product_id'];
    $product_variation_id = $item['variation_id'];
}
    
réponse donnée Ewout 25.04.2013 - 18:13
5

J'ai travaillé dessus et j'ai réalisé quelque chose. Que j'aimerais partager avec d'autres développeurs. Ce n’est pas un moyen privilégié de le faire, mais pour le savoir, je publie ma réponse.

global $wpdb;
            $result = $wpdb->get_results('select t1.order_item_id, t2.* FROM 
            wp_woocommerce_order_items as t1 JOIN wp_woocommerce_order_itemmeta as t2 ON t1.order_item_id = t2.order_item_id
            where t1.order_id='.$order->ID);
            echo '<pre>';
            print_r($result);
            echo '</pre>'; 

espérons pouvoir aider quelqu'un.

De plus:

Il est préférable d’utiliser le préfixe de table wordpress pour éviter les problèmes de sites Web multiples, de migration, etc.

global $wpdb;
$table_name = $wpdb->prefix . 'table_name'; 
    
réponse donnée arslaan ejaz 25.04.2013 - 19:19

Lire d'autres questions sur les étiquettes