2015-01-09 31 views
0

我想改變添加/完成付款變化項目meta_data上payment_completed

是somethink喜歡添加自定義字段隨機數發生變化後,爲了項目一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) 
    ); 
} 

回答

0

如果你看一下在訂單抽象類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());   
     } 
    } 
} 
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');   
    } 
} 
+0

不爲我工作..我認爲代碼是更新產品= \ –