2014-08-27 60 views
3

我設法編寫我的插件來爲woocommerce產品添加額外的自定義字段。這從購物車一直到完成訂單。去我的帳戶並查看過去的訂單,自定義字段顯示正確。Woocommerce再次訂購不會複製自定義字段

但是,當我選擇在過去訂單上點擊「重新訂購」時,新購物車不包含自定義字段及其值。

這是我目前有嘗試這樣的:

// order again 
add_filter('woocommerce_order_again_cart_item_data', 'woocommerce_order_again_cart_item_data', 10, 3); 

function woocommerce_order_again_cart_item_data($cart_item_meta, $product, $order){ 
    global $woocommerce; 
    // Disable validation 
    remove_filter('woocommerce_add_to_cart_validation', array($this, 'validate_add_cart_item'), 10, 3); 

    if (! array_key_exists('item_meta', $cart_item_meta) || ! is_array($cart_item_meta['item_meta'])) 
     $cart_item_meta['item_meta'] = array(); 
    foreach (array('jhpc_toppings', 'jhpc_sauce', 'jhpc_toppings_half', 'jhpc_sauce_half', 'jhpc_garnish') as $key) 
     $cart_item_meta['item_meta'][$key] = $product['item_meta'][$key]; 
    return $cart_item_meta; 
} 

回答

0

更換

$cart_item_meta['item_meta'][$key] = $product['item_meta'][$key]; 

通過

$cart_item_meta[$key] = $product[$key]; 

否則,你爲什麼要刪除的驗證?

0

這是再次添加所有自定義字段數據的代碼。在主題的function.php文件中使用給定的代碼,並用您的密鑰替換$ customfields數組的自定義字段鍵。

<?php 
    add_filter('woocommerce_order_again_cart_item_data', 'wpso2523951_order_again_cart_item_data', 10, 3); 

function wpso2523951_order_again_cart_item_data($cart_item_meta, $product, $order){ 
    //Create an array of all the missing custom field keys that needs to be added in cart item. 
    $customfields = [ 
        'customfield_key1', 
        'customfield_key2', 
        'customfield_key3', 
        'customfield_key4', 
        ]; 
    global $woocommerce; 
    remove_all_filters('woocommerce_add_to_cart_validation'); 
    if (! array_key_exists('item_meta', $cart_item_meta) || ! is_array($cart_item_meta['item_meta'])) 
    foreach ($customfields as $key){ 
     if(!empty($product[$key])){ 
      $cart_item_meta[$key] = $product[$key]; 
     } 
    } 
    return $cart_item_meta; 
} 
?> 

與丟失或沒有被自動添加自定義字段的鍵替換數組$ customfields的值。

相關問題