我试图将购物车元数据添加到订单中的产品中。到目前为止,我已经成功地在购物车级别向产品添加了自定义值(通过在购物车表中内联输出值来证明),但是一旦完成了最后的结帐,它就不会保存在任何地方。
加入购物车(确认有效):
function se_wc_add_product_order_type_cart( $cart_item, $product_id ) {
$product_order_type = $_POST['product_order_type'] ?? '';
if ( $product_order_type ) {
$cart_item['product_order_type'] = sanitize_text_field( $product_order_type );
}
return $cart_item;
}
add_filter( 'woocommerce_add_cart_item_data', 'se_wc_add_product_order_type_cart', 10, 2 );
从购物车添加订单(不工作):
function se_wc_product_add_on_order_item_meta( $item, $cart_item_key, $values, $order ) {
$product_order_type = $values['product_order_type'] ?? '';
if ( ! empty( $product_order_type ) ) {
$item->add_meta_data( 'product_order_type', $product_order_type );
}
}
add_action( 'woocommerce_checkout_create_order_line_item', ' se_wc_product_add_on_order_item_meta', 10, 4 );
没有任何东西被保存到数据库(假设它应该在wp_woocommerce_order_itemmeta
表中),并且从woocommerce_order_item_get_formatted_meta_data
钩子在meta_data
字段上做var_dump
是空的-可能再次出现在那里。
如果重要,产品是可变产品,网站是多站点。
您可以使用下面的代码添加item meta到order meta:
function se_wc_product_add_on_order_item_meta( $item_id, $values ) {
$product_order_type = $values['product_order_type'];
if ( ! empty( $product_order_type ) ) {
wc_add_order_item_meta($item_id,'product_order_type',$product_order_type);
}
}
add_action( 'woocommerce_new_order_item', ' se_wc_product_add_on_order_item_meta', 1, 2 );
谢谢。