payment_complete上项目元数据的更改

时间:2015-01-09 02:14:17

标签: wordpress-plugin woocommerce wordpress

我希望在完成付款后在订单商品中添加/更改元数据

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

我怎么能做到?

我没找到如何

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

2 个答案:

答案 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() );         
        }
    }
}