Obține ID-ul produsului din ID-ul comenzii în Woocommerce

25 apr. 2013, 10:57:33
Vizualizări: 171K
Voturi: 47

Am dificultăți cu relația dintre detaliile produsului și detaliile comenzii în Woocommerce. Nu reușesc să găsesc ID-ul produsului pentru un ID de comandă corespunzător în pagina Vizualizare Comenzi a temei Woocommerce. Doresc simplu să obțin conținutul produsului și permalink-ul etc. în pagina Vizualizare Comenzi.

Am încercat să caut în wp_postmeta dar nu am avut succes.

0
Toate răspunsurile la întrebare 2
7
97

WooCommerce 3.0+

Puteți obține articolele comenzii pentru o comandă folosind

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

apoi, dacă parcurgeți articolele, puteți obține toate datele relevante:

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

un sfat bun este să verificați cum preiau paginile de administrare a comenzilor datele, veți găsi multe răspunsuri acolo!

Înainte de 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'];
}
25 apr. 2013 19:13:36
Comentarii

Dacă nu greșesc, această soluție nu pare să funcționeze în cea mai recentă versiune de WooCommerce...

rnevius rnevius
9 nov. 2015 19:34:43

Încă funcționează în WooCommerce 2.4.8 pentru mine, dar trebuie să ai variabila $order_id definită (uneori se găsește în $order->id, în funcție de contextul tău).

Ewout Ewout
10 nov. 2015 16:25:37

@mevius am adăugat o editare pentru versiunea 3+ cu o funcție de distribuție pentru verificarea mai multor produse

That Realtor Programmer Guy That Realtor Programmer Guy
20 oct. 2017 20:40:27

vezi istoricul modificărilor pentru dispatcher, acest lucru nu este bun fără el, deoarece va consuma resursele serverului fără rost

That Realtor Programmer Guy That Realtor Programmer Guy
22 nov. 2017 21:46:08

@GaretClaborn asta depinde în totalitate de ce faci cu aceste date. 'așa cum este', acest fragment de exemplu nu irosesc memoria în niciun fel.

Ewout Ewout
27 nov. 2017 15:44:58

Dacă verifici mai multe produse, atunci repeți o bună parte din logică față de posibilitatea de a profita de prima rulare a buclei

That Realtor Programmer Guy That Realtor Programmer Guy
19 dec. 2017 06:02:19

Rețineți că în multe șabloane WooCommerce $order deja există

Chris Pink Chris Pink
20 sept. 2021 13:24:10
Arată celelalte 2 comentarii
2

Am lucrat la asta și am realizat ceva. Ce aș dori să împărtășesc cu alți dezvoltatori. Aceasta nu este metoda preferată de a face acest lucru, dar din punct de vedere al cunoștințelor, postez răspunsul meu.

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

Sper că va ajuta pe cineva.

În plus:

Este mai bine să folosiți prefixul tabelelor WordPress pentru a evita problemele în cazul mai multor site-uri web sau în timpul migrării etc.

global $wpdb;
$table_name = $wpdb->prefix . 'table_name'; 
25 apr. 2013 20:19:04
Comentarii

@ErenorPaz Mulțumesc, am adăugat conținut în răspuns, ca replică la comentariul tău :)

Arslaan Ejaz Arslaan Ejaz
25 oct. 2016 11:33:52

Mulțumesc pentru răspunsul rapid, chiar și la un subiect vechi! Voi șterge comentariile mele anterioare, deoarece sunt învechite acum :)

Erenor Paz Erenor Paz
25 oct. 2016 13:40:15