在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 );
答案 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参考编号必须是唯一的。