我正在尝试为我手动添加到购物车的每个项目添加自定义字段。自定义字段是从第三方API传回的打印ID。
这需要附在购物车中的每件商品上,以便在订单付款后使用。
我正在尝试在手动添加到购物车时使用$ cart_item_data为每个购物车项目设置自定义字段。我不确定这是否是我需要做的,但上帝喜欢一个特里尔:)
$woocommerce->cart->add_to_cart( $product_id, 1, '', '', array(printJobId => 12345) );
当我在woocommerce中查看订单时,我无法在任何地方看到printJobId。
有谁知道我哪里出错了?
由于
答案 0 :(得分:3)
你需要另外两个钩子:
add_action( 'woocommerce_get_cart_item_from_session', 'cart_item_from_session' , 99, 2 );
function cart_item_from_session( $data, $values ) {
$data[ 'printJobId' ] = isset( $values[ 'printJobId' ] ) ? $values[ 'printJobId' ] : '';
return $data;
}
add_filter( 'woocommerce_add_order_item_meta', 'add_item_meta_order', 10, 3 );
function add_item_meta_order( $item_id, $values ) {
if ( !is_null( $values[ 'printJobId' ] ) ) {
wc_add_order_item_meta( $item_id, 'printJobId', $values[ 'printJobId' ] );
}
}
然后,您将在后台和订单详细信息页面上看到元数据