更改客户的SKU产品数量

时间:2016-10-07 04:29:46

标签: php wordpress woocommerce orders hook-woocommerce

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

1 个答案:

答案 0 :(得分:1)

  

更新(与您的评论相关)首先关于 SKU(s)项目的订单,是不可能的更新订单中的SKU,因为相关数据库表 item ID 中没有任何关于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参考编号必须是唯一的