我已经成功地编写了我的插件代码以向 woocommerce 产品添加额外的自定义字段。这从购物车到完成订单一直有效。转到我的帐户并查看过去的订单,自定义字段显示正确。
但是,当我选择对过去的订单点击“再次订购”时,新购物车不包含自定义字段及其值。
这是我目前必须尝试的:
// order again
add_filter( 'woocommerce_order_again_cart_item_data', 'woocommerce_order_again_cart_item_data', 10, 3 );
function woocommerce_order_again_cart_item_data($cart_item_meta, $product, $order){
global $woocommerce;
// Disable validation
remove_filter( 'woocommerce_add_to_cart_validation', array( $this, 'validate_add_cart_item' ), 10, 3 );
if ( ! array_key_exists( 'item_meta', $cart_item_meta ) || ! is_array( $cart_item_meta['item_meta'] ) )
$cart_item_meta['item_meta'] = array();
foreach ( array( 'jhpc_toppings', 'jhpc_sauce', 'jhpc_toppings_half', 'jhpc_sauce_half', 'jhpc_garnish' ) as $key )
$cart_item_meta['item_meta'][$key] = $product['item_meta'][$key];
return $cart_item_meta;
}
最佳答案
替换
$cart_item_meta['item_meta'][$key] = $product['item_meta'][$key];
由
$cart_item_meta[$key] = $product[$key];
否则,为什么要删除验证?
关于php - Woocommerce Order Again 不会复制自定义字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25527692/