web-dev-qa-db-fra.com

Obtenir authentifiant du produit authentifiant de la commande dans Woocommerce

J'ai 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 veux simplement obtenir le contenu du produit et le permalien, etc. sur Voir les commandes page.

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

36
arslaan ejaz

WooCommerce 3.0+

vous pouvez obtenir les articles d'une commande par

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

ensuite, 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'];
}
66
Ewout

J'ai travaillé dessus et réalisé quelque chose. Que j'aimerais partager avec d'autres développeurs. Ce n'est pas la manière préférée 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>'; 

l'espoir aidera quelqu'un.

Aditionellement:

Mieux vaut 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'; 
5
arslaan ejaz