为订单添加额外信息
Adding extra info to order
我正在以编程方式将产品添加到购物车。除此之外,不知何故,我想为订单存储一些额外的信息(一个数组)。当客户完成订单时,我想通过一些 WordPress 操作访问该信息。我必须在将产品添加到购物车后立即执行此操作,因为如果用户没有立即完成订单,信息可能会在此之后发生变化。有什么方法可以做到这一点,而不需要让数据库正常工作吗?
您可能应该使用 WooCommerce Cart Item Meta API
和 WooCommerce Order Item Meta API
。
你这样使用它们:
// Add to cart item
// This is triggered on add to cart
add_filter('woocommerce_add_cart_item_data', 'my_add_cart_item_data', 10, 2);
function my_add_cart_item_data( $cart_item_meta, $product_id ) {
//Here we can easily filter what values should be added to what products using the $product_id
$cart_item_meta['my_meta_key'] = 'meta value';
return $cart_item_meta;
}
// Add to order item when the cart is converted to an order
// This is triggered when the order is created
add_action('woocommerce_add_order_item_meta', 'my_order_item_meta'), 10, 2);
function my_order_item_meta( $item_id, $values, $cart_item_key ) {
// The value stored in cart above is accessable in $values here
woocommerce_add_order_item_meta( $item_id, 'meta_key', $values['my_meta_key'] );
//Or add what ever you want
$meta_value = 'value';
woocommerce_add_order_item_meta( $item_id, 'meta_key', $meta_value );
}
希望对您有所帮助。
我正在以编程方式将产品添加到购物车。除此之外,不知何故,我想为订单存储一些额外的信息(一个数组)。当客户完成订单时,我想通过一些 WordPress 操作访问该信息。我必须在将产品添加到购物车后立即执行此操作,因为如果用户没有立即完成订单,信息可能会在此之后发生变化。有什么方法可以做到这一点,而不需要让数据库正常工作吗?
您可能应该使用 WooCommerce Cart Item Meta API
和 WooCommerce Order Item Meta API
。
你这样使用它们:
// Add to cart item
// This is triggered on add to cart
add_filter('woocommerce_add_cart_item_data', 'my_add_cart_item_data', 10, 2);
function my_add_cart_item_data( $cart_item_meta, $product_id ) {
//Here we can easily filter what values should be added to what products using the $product_id
$cart_item_meta['my_meta_key'] = 'meta value';
return $cart_item_meta;
}
// Add to order item when the cart is converted to an order
// This is triggered when the order is created
add_action('woocommerce_add_order_item_meta', 'my_order_item_meta'), 10, 2);
function my_order_item_meta( $item_id, $values, $cart_item_key ) {
// The value stored in cart above is accessable in $values here
woocommerce_add_order_item_meta( $item_id, 'meta_key', $values['my_meta_key'] );
//Or add what ever you want
$meta_value = 'value';
woocommerce_add_order_item_meta( $item_id, 'meta_key', $meta_value );
}
希望对您有所帮助。