Ottieni l'ID del prodotto dall'ID dell'ordine in Woocommerce
2 risposta
- voti
-
- 2013-04-25
WooCommerce 3.0e versioni successive
puoi otteneregli articoli di un ordineentro
$order = wc_get_order( $order_id ); $items = $order->get_items();
quindi sefai un ciclotraglielementi,puoi otteneretuttii dati rilevanti:
foreach ( $items as $item ) { $product_name = $item->get_name(); $product_id = $item->get_product_id(); $product_variation_id = $item->get_variation_id(); }
unbuon consiglio è controllare come lepagine degli ordini dell'amministratore ottengonoi dati,troveraimolte 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']; }
WooCommerce 3.0+
you can get the order items of an order by
$order = wc_get_order( $order_id ); $items = $order->get_items();
then if you loop through the items, you can get all the relevant data:
foreach ( $items as $item ) { $product_name = $item->get_name(); $product_id = $item->get_product_id(); $product_variation_id = $item->get_variation_id(); }
a good tip is to check how the admin order pages get the data, you'll find many answers there!
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']; }
-
Ameno chenonmi manchi qualcosa,questonon sembrafunzionarenell'ultima versione di WooCommerce ...Unless I'm missing something, this doesn't appear to work in the latest version of WooCommerce...
- 0
- 2015-11-09
- rnevius
-
Perme funziona ancorain WooCommerce 2.4.8,ma devi avere la variabile $ order_id definita (a volte èin $ order->id,a seconda del contesto).Still works in WooCommerce 2.4.8 for me, but you need to have the $order_id variable defined (sometimes it's in $order->id, depending on your context).
- 0
- 2015-11-10
- Ewout
-
@mevius ho aggiunto unamodificaper 3+ con unafunzione di spedizioneper controllarepiùprodotti@mevius i added an edit for 3+ with a dispatch function for checking multiple products
- 0
- 2017-10-20
- Garet Claborn
-
vedere la cronologia dellemodificheperil dispatcher,questonon vabene senza diessopoiché divoreràinutilmenteiltuo serversee edit history for dispatcher, this is not good without it as it will eat up your server pointlessly
- 0
- 2017-11-22
- Garet Claborn
-
@ GaretClaborn dipendeinteramente da cosa staifacendo con questi dati."così com'è",questoframmento diesempionon sprecain alcunmodo lamemoria.@GaretClaborn that depends entirely on what you're doing with this data. 'as is', this example snippet is not wasteful of memory in any way.
- 0
- 2017-11-27
- Ewout
-
Se stai controllandopiùprodotti,stai ripetendo unbelpo 'di logica anzichéesserein grado di capitalizzare laprimaesecuzione del cicloIf you are checking multiple products then you're repeating quite a bit of logic vs being able to capitalize on the first run of the loop
- 0
- 2017-12-19
- Garet Claborn
-
- 2013-04-25
Ci ho lavoratoe ho ottenuto qualcosa.Che vorrei condividere con altri sviluppatori.Questonon èilmodopreferitoperfarlo,maper conoscenza stopostando lamia 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 utilizzareilprefisso dellatabella wordpressperevitareproblemiin più siti Web onellamigrazione,ecc.
global $wpdb; $table_name = $wpdb->prefix . 'table_name';
I worked on it and achieved something. That I would like to share to other developers. This is not preferred way to do it, but for knowledge I am posting my answer.
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>';
hope will help someone.
Additionally:
Better to use wordpress table prefix to avoid problems in multiple website or in migration etc.
global $wpdb; $table_name = $wpdb->prefix . 'table_name';
-
@ErenorPaz Grazie,ho aggiunto contenutiin risposta,in risposta altuo commento :)@ErenorPaz Thanks, I added content in answer, in reply to your comment :)
- 1
- 2016-10-25
- arslaan ejaz
-
Grazieper la rapida risposta,anche su un vecchiothread!Elimineròi miei commentiprecedenti,poiché ora è obsoleto :)Thank you for the fast response, even on an old thread! I'll delete my previous comments, since it's outdated now :)
- 0
- 2016-10-25
- Erenor Paz
Hoproblemi coni dettagli delprodotto Woocommercee la relazione coni dettagli dell'ordine.Non riesco atrovare l'IDprodotto di un ID ordine correlatonellapagina Visualizza ordini deltema Woocommerce.Desidero semplicemente ottenereil contenuto delprodottoe ilpermalink,ecc. Nellapagina Visualizza ordini .
Hoprovato a cercarein
wp_postmeta
manon ho avutofortuna.