Ottieni l'ID prodotto dall'ID ordine in Woocommerce [chiuso]


38

Sto riscontrando problemi con i dettagli del prodotto Woocommerce e la relazione con i dettagli dell'ordine. Non riesco a trovare l'ID prodotto di un ID ordine correlato nella pagina Visualizza ordini del tema Woocommerce. Voglio semplicemente ottenere il contenuto del prodotto e permalink ecc . Nella pagina Visualizza ordini .

Ho provato a cercare wp_postmetama non ho avuto fortuna.

Risposte:


68

WooCommerce 3.0+

è possibile ottenere gli articoli dell'ordine di un ordine da

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

quindi se esegui il ciclo tra gli elementi, puoi ottenere tutti i dati rilevanti:

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

un buon consiglio è controllare come le pagine dell'ordine di amministrazione ottengono i dati, troverai molte risposte lì!

Pre-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'];
}

A meno che non mi manchi qualcosa, questo non sembra funzionare nell'ultima versione di WooCommerce ...
— rnevius

Funziona ancora in WooCommerce 2.4.8 per me, ma devi avere la variabile $ order_id definita (a volte è in $ order-> id, a seconda del tuo contesto).
— Sempre il

@mevius ho aggiunto una modifica per 3+ con una funzione di invio per il controllo di più prodotti
— Garet Claborn,

vedi la cronologia delle modifiche per il dispatcher, questo non va bene senza di esso in quanto
— consumerà

@GaretClaborn dipende interamente da cosa stai facendo con questi dati. 'così com'è', questo frammento di esempio non spreca memoria in alcun modo.
— Ewout,

6

Ci ho lavorato e ho ottenuto qualcosa. Che vorrei condividere con altri sviluppatori. Questo non è il modo preferito per farlo, ma per conoscenza sto pubblicando la mia risposta.

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

la speranza aiuterà qualcuno.

Inoltre:

Meglio usare il prefisso della tabella di wordpress per evitare problemi in più siti Web o nella migrazione ecc.

global $wpdb;
$table_name = $wpdb->prefix . 'table_name'; 

1
@ErenorPaz Grazie, ho aggiunto dei contenuti in risposta, in risposta al tuo commento :)
— arslaan ejaz

Grazie per la risposta veloce, anche su un vecchio thread!
— Eliminerò i
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.