Как добавить пользовательские метаданные к заказам WooCommerce? В частности, второй внешний ID заказа
Я работаю над созданием пользовательской интеграции WooCommerce с нашей внутренней ERP-системой. Я использовал хук woocommerce_checkout_order_processed
, чтобы при размещении заказа отправлять всю необходимую информацию в нашу ERP, и в ответ получаю ID заказа. Этот ID заказа отличается от того, что есть в WooCommerce, и мне нужен способ сопоставить ID заказа из ERP с заказом WooCommerce. Какой лучший способ это сделать?
Я пытался добавить пользовательские метаданные, но пока безуспешно.
add_metadata( "shop_order", $order->id, "mapics_order", (string) $orderNumber, TRUE );
и стараюсь избежать использования wc_add_order_item_meta
, так как это относится не к конкретному товару, а ко всему заказу в целом.

Вы можете использовать хук woocommerce_checkout_update_order_meta
для обновления метаданных заказа. Пример кода:
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'])));
}

Отлично, спасибо! Я сократил до просто update_post_meta
, что, кажется, работает нормально, но мне нужно будет провести дополнительные проверки, чтобы убедиться.

Сессии? Их разве ещё разрешено использовать в php? ;) Если серьёзно, куда именно должны попадать данные в сессию?
