Как добавить пользовательские метаданные к заказам WooCommerce? В частности, второй внешний ID заказа

14 июн. 2017 г., 15:23:32
Просмотры: 22.3K
Голосов: 1

Я работаю над созданием пользовательской интеграции 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, так как это относится не к конкретному товару, а ко всему заказу в целом.

0
Все ответы на вопрос 1
3

Вы можете использовать хук 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'])));
}
14 июн. 2017 г. 15:52:14
Комментарии

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

fwho fwho
14 июн. 2017 г. 16:02:35

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

Mark Kaplun Mark Kaplun
14 июн. 2017 г. 16:14:06

Передача данных в сессию - это легко, и даже если это не идеальное решение, оно дало мне недостающий элемент, который мне был нужен для продолжения моего проекта.

fwho fwho
14 июн. 2017 г. 16:24:48