Cum adaugi metadate personalizate la comenzile WooCommerce? În special un al doilea ID de comandă extern
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.

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

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.

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