Cum adaugi metadate personalizate la comenzile WooCommerce? În special un al doilea ID de comandă extern

14 iun. 2017, 15:23:32
Vizualizări: 22.3K
Voturi: 1

Lucrez la construirea unei integrări personalizate între WooCommerce și ERP-ul nostru intern. Am folosit hook-ul woocommerce_checkout_order_processed astfel încât atunci când se plasează o comandă, trimit toate informațiile relevante către ERP-ul nostru, iar răspunsul este un ID de comandă. Acesta este un ID de comandă diferit de cel din WooCommerce și am nevoie de o modalitate de a mapa ID-ul comenzii din ERP cu cel din WooCommerce. Care este cea mai bună modalitate de a realiza acest lucru?

Am încercat să adaug metadate personalizate, dar până acum acest lucru a eșuat. add_metadata( "shop_order", $order->id, "mapics_order", (string) $orderNumber, TRUE ); și încerc să evit folosirea wc_add_order_item_meta deoarece acest lucru nu este specific produsului, ci pentru întreaga comandă în sine.

0
Toate răspunsurile la întrebare 1
3

poți folosi hook-ul woocommerce_checkout_update_order_meta pentru a actualiza metadatele comenzii. Te rog verifică codul exemplu:

add_action('woocommerce_checkout_update_order_meta', 'custom_checkout_field_update_order_meta');

function custom_checkout_field_update_order_meta($order_id)
{
    session_start();
    if ($_SESSION['mapics_order'])
        update_post_meta($order_id, 'mapics_order', esc_attr(htmlspecialchars($_SESSION['mapics_order'])));
}
14 iun. 2017 15:52:14
Comentarii

Super, mulțumesc! Am simplificat codul la doar update_post_meta care pare să funcționeze bine, dar va trebui să fac niște verificări pentru a fi sigur.

fwho fwho
14 iun. 2017 16:02:35

sesiuni? sunt încă permise în php? ;) mai serios, unde anume ar trebui să ajungă datele în sesiune?

Mark Kaplun Mark Kaplun
14 iun. 2017 16:14:06

Transmiterea datelor într-o sesiune este ușoară, și chiar dacă nu este soluția perfectă, mi-a dat piesa lipsă de care aveam nevoie pentru a continua proiectul meu.

fwho fwho
14 iun. 2017 16:24:48