payment_completed 项 meta_data 的更改

Changes in item meta_data on payment_completed

我想在完成付款后更改add/change一件meta_data订单商品

有点像添加一个带有随机数的自定义字段。

我该怎么做?

我没找到方法

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

为此目的使用 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' );         
    }
}

如果您查看订单摘要中的 payment_complete() 方法 class,您将看到 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() );         
        }
    }
}