在Woocommerce购物车,结帐和订单上显示并保存添加的自定义购物车项目数据

时间:2019-02-03 17:38:54

标签: php wordpress woocommerce cart checkout

我正在尝试使用购物车商品元数据在购物车中添加产品。这是代码:

$cart_item_data = array();

$cart_item_data['add_size'] = array('PR CODE'=>'1.0');

print_r(WC()->cart->add_to_cart( $product_id ,1,  0,array(), $cart_item_data ));

它正在将产品添加到购物车中,但未按顺序显示在购物车中。

能帮我吗?

3 个答案:

答案 0 :(得分:1)

要在购物车中显示和保存添加到购物车中的自定义元数据,请在使用时结帐和订购:

WC()->cart->add_to_cart( $product_id ,1,  0,array(), array('add_size' => array('PR CODE'=>'1.0') );

您将使用以下代码:

// Display custom cart item meta data (in cart and checkout)
add_filter( 'woocommerce_get_item_data', 'display_cart_item_custom_meta_data', 10, 2 );
function display_cart_item_custom_meta_data( $item_data, $cart_item ) {
    $meta_key = 'PR CODE';
    if ( isset($cart_item['add_size']) && isset($cart_item['add_size'][$meta_key]) ) {
        $item_data[] = array(
            'key'       => $meta_key,
            'value'     => $cart_item['add_size'][$meta_key],
        );
    }
    return $item_data;
}

// Save cart item custom meta as order item meta data and display it everywhere on orders and email notifications.
add_action( 'woocommerce_checkout_create_order_line_item', 'save_cart_item_custom_meta_as_order_item_meta', 10, 4 );
function save_cart_item_custom_meta_as_order_item_meta( $item, $cart_item_key, $values, $order ) {
    $meta_key = 'PR CODE';
    if ( isset($values['add_size']) && isset($values['add_size'][$meta_key]) ) {
        $item->update_meta_data( $meta_key, $values['add_size'][$meta_key] );
    }
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。

购物车(和结帐)页面上的示例显示:

enter image description here

订单(和电子邮件通知)上显示的示例:

enter image description here

答案 1 :(得分:1)

我花了最后几个小时弄清楚事情之后,发现该方法实际上在一段时间内已经有所改变。

方法:

$woocommerce->cart->add_to_cart($product_id, $quantity, NULL, NULL, array('your_key' => 'your_value'));

对于我来说,我需要这样做,并且自定义元数据会自动显示在购物车和订单中:

import boto3

# Document
documentName = "test2-28.png"

# Read document content
with open(documentName, 'rb') as document:
    imageBytes = document.read()

# Amazon Textract clientls
textract = boto3.client('textract')

# Call Amazon Textract
response = textract.detect_document_text(Document={'Bytes': imageBytes})


# print(response)

# Print detected text
for item in response["Blocks"]:
    if item["BlockType"] == "LINE":
        print('\033[94m' + item["Text"] + '\033[0m')

您可以在此处找到更多信息:https://woocommerce.wp-a2z.org/oik_api/wc_cartadd_to_cart/

答案 2 :(得分:0)

您可以使用以下代码将产品添加到购物车:

countries                       data
United states of america        1
india                           2

参考:https://docs.woocommerce.com/wc-apidocs/source-class-WC_AJAX.html#356-397

也来看看这个:add meta to a product on cart WooCommerce