WooCommerce:为订单中的每个项目添加不同的订单项目元

时间:2019-02-23 作者:Hossein

现在有了这个函数,我可以向订单的所有项目添加新的自定义订单项目元。

add_action( \'woocommerce_add_order_item_meta\', \'add_order_item_meta\', 10, 2 );
function add_order_item_meta($item_id, $values) {
    $key = \'_key\'; 
    $value = \'_value\'; 
    wc_update_order_item_meta($item_id, $key, $value);
}
但我如何才能向每个订单项目添加不同的订单项目元?示例我需要将每个产品价格添加为order\\u itemmeta。

1 个回复
SO网友:Jaydip Nimavat

尝试woocommerce_checkout_create_order_line_item 它有4个可用参数,在WooCommerce 3.3以上版本后可用。

  • $item 是的实例WC_Order_Item_Product 新引入的类$cart_item_key 购物车项目是否为唯一哈希键$values 是购物车项目$order 的实例WC_Order 对象(在某些特定情况下,这是一个非常有用的附加参数)
在这个钩子中,我们将替换旧的工作函数wc_add_order_item_meta() 由新WC_Data update_meta_data() 要与一起使用的方法$item 论点

示例:

add_action( \'woocommerce_checkout_create_order_line_item\', \'custom_checkout_create_order_line_item\', 20, 4 );
function custom_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) {
    // Get a product custom field value
    $custom_field_value = get_post_meta( $item->get_product_id(), \'_meta_key\', true );
    // Update order item meta
    if ( ! empty( $custom_field_value ) ){
        $item->update_meta_data( \'meta_key1\', $custom_field_value );
    }
    // … … Or … …

    // Get cart item custom data and update order item meta
    if( isset( $values[\'custom_data\'] ) ) {
        $item->update_meta_data( \'meta_key2\', $values[\'custom_data\'] );
    }
}

相关推荐