我希望在完成付款后在订单商品中添加/更改元数据
有点像添加带随机数的自定义字段。
我怎么能做到?
我没找到如何
public function process_payment( $order_id ) {
global $woocommerce;
$order = new WC_Order( $order_id );
// Mark as on-hold (we're awaiting the cheque)
if ( 'yes' == $this->debug ) {
$this->log->add( 'Compra', "IPN Response Loggin test" );
}
$order->get_items();
if ( sizeof( $order->get_items() ) > 0 ) {
foreach ( $order->get_items() as $item ) {
if ( ! $item['qty'] ) {
continue;
}
// Any information about function to edit meta data in item ?
}
}
$order->payment_complete();
// Reduce stock levels
$order->reduce_order_stock();
// Remove cart
$woocommerce->cart->empty_cart();
// Return thankyou redirect
return array(
'result' => 'success',
'redirect' => $this->get_return_url( $order )
);
}
答案 0 :(得分:1)
为此目的使用wc_update_order_item_meta
。
试试这个
if ( sizeof( $order->get_items() ) > 0 ) {
foreach ( $order->get_items() as $id => $item ) {
if ( ! $item['qty'] ) {
continue;
}
// Any information about function to edit meta data in item ?
wc_update_order_item_meta( $id, 'your meta key', 'new value' );
}
}
答案 1 :(得分:0)
如果查看Order抽象类中的payment_complete()
方法,您将看到woocommerce_payment_complete
操作挂钩。如果您想在付款完成后运行某些内容,那么您可以将您的功能附加到此挂钩。如果不真正了解您正在做什么,以下内容只会为订单中的每个项目添加一个随机数(不一定是唯一的)。
add_action( 'woocommerce_payment_complete', 'so_27852832_item_data' );
function so_27852832_item_data( $order_id ){
$order = new WC_Order( $order_id );
if ( sizeof( $order->get_items() ) > 0 ) {
foreach ( $order->get_items() as $id => $item ) {
wc_update_order_item_meta( $id, '_random_number', rand() );
}
}
}