1

在 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 ); 
4

1 回答 1

1

更新(与您的评论相关) 首先涉及订单中的 SKU 商品,无法更新订单中的item IDSKU,因为相关数据库表中没有任何相关 SKU 的相关数据wp_woocommerce_order_itemmeta。相关 SKU 数据直接取自产品。


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

那不起作用的是

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,它会像预期的那样工作。

不要忘记,通常每个产品的 sku 参考编号必须是唯一的

于 2016-10-07T07:31:11.743 回答