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.