woocommerce: необходимо сохранить meta элемента корзины для каждого продукта в заказах

#woocommerce #hook-woocommerce

#woocommerce #крюк-woocommerce

Вопрос:

в настоящее время я добавляю товар в корзину с помощью $woocommerce->cart->add_to_cart( 21, 1, 0, $item,$cart_item_data)

теперь товар с идентификатором 21 добавляется в корзину. Я сохраняю много деталей в $cart_item_data .Я хочу, чтобы при создании заказа для этого продукта корзины $cart_item_data необходимо сохранить его в БД, а в разделе «Заказ администраторов» я могу видеть детали каждого продукта с помощью этого $cart_item_data .

Я знаю, как сохранить meta элемента заказа.

 add_action('woocommerce_add_order_item_meta',function($item_id, $values, $cart_item_key){

wc_add_order_item_meta( $item_id, 'Reference', 12345 , false ); 

        },10,2);
  

Но моя проблема в том, что мне нужно получить значения из $cart_item_data и сохранить в woocommerece_order_itemmeta таблице.

Примечание: $cart_item_data= — это массив, в котором я сохранил некоторые пользовательские данные во время добавления в корзину

Пожалуйста, помогите решить эту проблему.

Ответ №1:

Если вы правильно добавили пользовательские данные в корзину для своего продукта, они будут указаны в $item в приведенном ниже коде, и вы можете использовать приведенный ниже код для дальнейшего сохранения.

 add_action('woocommerce_add_order_item_meta','add_order_item_meta',1,2);

function add_order_item_meta($item_id, $values) {

    if(isset($values['_my_custom_info']) amp;amp; !empty($values['_my_custom_info'])) {
        // Get the custom array
        $arrCustomInfo = $values['_my_custom_info'];

        // For each custom element
        foreach($arrCustomInfo AS $key => $arrInfo) {

            if(isset($arrInfo['quantity']) amp;amp; !empty($arrInfo['quantity'])) {
                // Save variation addon info
                $strKey = $arrInfo['name'] . ' X ' . $arrInfo['quantity'];

                // Save custom order item meta
                wc_add_order_item_meta($item_id, $strKey . ' ', wc_price($arrInfo['price'] * $arrInfo['quantity']));
                wc_add_order_item_meta($item_id, 'Product Image ', $arrInfo['image']);
            }
        }
    }
}