Woocommerce:如何在订单中保存产品SKU

时间:2015-01-28 13:43:22

标签: wordpress woocommerce

现在产品SKU与产品相关,因此在订购时并且产品未被删除时可以显示,但一旦产品被删除,SKU就不再可用。查看订单不再显示SKU。

2 个答案:

答案 0 :(得分:3)

经过测试的代码

使用woocommerce_add_order_item_meta挂钩。我已经包含了两个版本。 1只支持简单的产品。第二个版本也支持变体。

add_action( 'woocommerce_add_order_item_meta', 'so_28193771', 10, 3 );
function so_28193771( $item_id, $values, $cart_item_key ) {

        $item_sku  =  get_post_meta( $values[ 'product_id' ], '_sku', true );

        wc_add_order_item_meta( $item_id, 'sku', $item_sku , false );

}

Product displayed on order receipt page

Database view of 'sku' added to order item meta successfully

变体支持

add_action( 'woocommerce_add_order_item_meta', 'so_28193771', 10, 3 );
function so_28193771( $item_id, $values, $cart_item_key ) {

        $item_sku  =  get_post_meta( $values[ 'product_id' ], '_sku', true );

        $item_has_variation  =  ( ! empty( $values[ 'variation_id' ] ) ? true : false );

        if( $item_has_variation ) {

                wc_add_order_item_meta( $item_id, 'parent_sku', $item_sku, false );

                $variation_sku  =  get_post_meta( $values[ 'variation_id' ], '_sku', true );
                wc_add_order_item_meta( $item_id, 'variation_sku', $variation_sku, false );

        }
        else {

                wc_add_order_item_meta( $item_id, 'sku', $item_sku , false );

        }

}

Product displayed on order receipt page with variation Database view of 'sku' added to order item meta successfully with variation

答案 1 :(得分:0)

从 3.0.1 开始,woocommerce_add_order_item_meta 钩子已被弃用,新的​​钩子是 woocommerce_new_order_item($item_id, $item, $order_id)