1

目前我将产品添加到购物车$woocommerce->cart->add_to_cart( 21, 1, 0, $item,$cart_item_data)

现在 ID 为 21 的产品已添加到购物车。我在 $cart_item_data 中保存了许多详细信息。我想要的是当为这个购物车产品创建订单时,然后$cart_item_data需要保存到数据库,并且在管理员的订单部分,我可以看到每个产品的详细信息$cart_item_data

我知道如何保存订单项元。

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=是一个数组,我在添加到购物车期间保存了一些自定义详细信息

请帮助解决这个问题。

4

1 回答 1

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']) && !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']) && !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']);
            }
        }
    }
}
于 2017-03-17T04:51:18.090 回答