在谢谢挂钩中为回头客更改产品的 SKU 编号

Change SKU number of product for returning clients in thankyou hook

在 WooCommerce 中,我正在尝试更改回头客收到的订单的产品 SKU。
目前我使用当前代码,但它似乎不起作用。

我有 2 种不同的产品。 id为5836的产品是普通产品,另一个是订阅产品。

这是我的代码:

function action_woocommerce_thankyou( $order_id ) {  
    // Let's get the order details
    $order = wc_get_order( $order_id );

    // Customer who made the purchase
    $user_id = $order->get_user_id();

    // Now get order count for the customer
    $order_count = wc_get_customer_order_count( $user_id );
    $items = $order->get_items();

    foreach ( $order->get_items() as $item_id => $item) {
        $product_name = $item['name'];
        $product_id = $item['product_id'];
        $product_variation_id = $item['variation_id'];


        if ( $order_count > 1) {

            // Returning customer...
            if ( $product_id == '5836') {
            update_post_meta( $order_id['product_id'],  '_sku', $ANT0001 );}
            else {

            // Returning customer...
            update_post_meta( $order_id['product_id'],  '_sku', $ANT0002 );}


        } else {

            // New customer...

        }

    }
}
add_action( 'woocommerce_thankyou', 'action_woocommerce_thankyou', 10, 1 ); 

Update (related to your comment): First concerning SKU(s) item(s) in the order, is not possible to update the SKU in the order, as there is no related data for any item ID concerning SKU in the related database table wp_woocommerce_order_itemmeta. The related SKU(s) data is taken from product(s) directly.


我已经测试了您的代码,它可以在全球范围内运行。

不起作用的是:

update_post_meta( $order_id['product_id'],  '_sku', $ANT0001 );
// and
update_post_meta( $order_id['product_id'],  '_sku', $ANT0001 );

因为您正在使用 未定义的变量 $ANT0001$ANT0002。相反,你应该使用这个:

update_post_meta( $product_id,  '_sku', 'ANT0001' );
// and
update_post_meta( $product_id,  '_sku', 'ANT0001' );

或者你应该定义你的 2 个变量 $ANT0001$ANT0002,它会起作用,只是正如预期的那样。

Don't forget that normally sku reference number has to be unique for each product.