在 Woocommerce 购物车、结帐和订单上显示和保存添加的自定义购物车项目数据
Display and save added custom cart item data on Woocommerce Cart, Checkout and Orders
我正在尝试使用购物车项目元数据将产品添加到购物车中。这是代码:
$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 ));
它正在将产品添加到购物车中,但它没有按顺序或在购物车中显示。
有什么可以帮助我的吗?
您可以使用以下代码将产品添加到购物车:
WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $variation );
参考:https://docs.woocommerce.com/wc-apidocs/source-class-WC_AJAX.html#356-397
也看看这个:add meta to a product on cart WooCommerce
使用时在购物车、结帐和订单中显示和保存添加到购物车的自定义元数据:
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 文件。已测试并有效。
购物车 (和结帐) 页面上的示例显示:
订单(和电子邮件通知)显示示例:
在我花了最后几个小时解决问题后,我发现该方法实际上随着时间的推移发生了一些变化。
方法:
$woocommerce->cart->add_to_cart( $product_id, $quantity, $variation_id, $variation, $cart_item_data );
在我的例子中,我需要这样做,自定义元数据会自动显示在购物车和订单中:
$woocommerce->cart->add_to_cart($product_id, $quantity, NULL, NULL, array('your_key' => 'your_value'));
您可以在这里找到更多信息:https://woocommerce.wp-a2z.org/oik_api/wc_cartadd_to_cart/
我正在尝试使用购物车项目元数据将产品添加到购物车中。这是代码:
$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 ));
它正在将产品添加到购物车中,但它没有按顺序或在购物车中显示。
有什么可以帮助我的吗?
您可以使用以下代码将产品添加到购物车:
WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $variation );
参考:https://docs.woocommerce.com/wc-apidocs/source-class-WC_AJAX.html#356-397
也看看这个:add meta to a product on cart WooCommerce
使用时在购物车、结帐和订单中显示和保存添加到购物车的自定义元数据:
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 文件。已测试并有效。
购物车 (和结帐) 页面上的示例显示:
订单(和电子邮件通知)显示示例:
在我花了最后几个小时解决问题后,我发现该方法实际上随着时间的推移发生了一些变化。
方法:
$woocommerce->cart->add_to_cart( $product_id, $quantity, $variation_id, $variation, $cart_item_data );
在我的例子中,我需要这样做,自定义元数据会自动显示在购物车和订单中:
$woocommerce->cart->add_to_cart($product_id, $quantity, NULL, NULL, array('your_key' => 'your_value'));
您可以在这里找到更多信息:https://woocommerce.wp-a2z.org/oik_api/wc_cartadd_to_cart/