2017-09-07 5 views
2

私はオーダーアイテムのメタを追加しようとしています。ユーザーがオーダーを送信すると、{prefix} woocommerce_order_itemmetaテーブルにそのアイテムが表示されます。カスタムカートアイテムの値をWooCommerceオーダーアイテムのメタデータに追加します

私はwoocommerce_add_cart_item_dataフィルタで私の値を追加します。

add_filter('woocommerce_add_cart_item_data', 'aa_func_20170206100217', 10, 3); 
function aa_func_20170206100217($cart_item_data, $product_id, $variation_id) { 
    $data = $_POST; 

    if (isset($data[ 'selected_date_event' ])) { 
     $selected_date_event = [ 
      'selected_date_event' => $data[ 'selected_date_event' ] 
     ]; 

     return array_merge($cart_item_data, $selected_date_event); 
    } 

    return $cart_item_data; 
} 

そして、これは作品です。私がカートをvar_dumpするとき、間違いなく私のparamが存在します。

enter image description here

しかし、ユーザーが注文を提出するとき、私は私のデシベルで、このPARAMを見つけることができません。

私は何を欠席しましたか?オーダーアイテムのメタにどのように格納することができますか?そして、それはこの事のための適切なフックですか?

答えて

1

あなたが発注アイテムのメタデータで、このデータを保存する必要があります。

// ADD THE INFORMATION AS ORDER ITEM META DATA SO THAT IT CAN BE SEEN AS PART OF THE ORDER 
add_action('woocommerce_add_order_item_meta','add_product_custom_field_to_order_item_meta', 9, 3); 
function add_product_custom_field_to_order_item_meta($item_id, $item_values, $item_key) { 
    // the meta-key is 'Date event' because it's going to be the label too 
    if(! empty($item_values['selected_date_event'])) 
     wc_update_order_item_meta($item_id, 'Date event', sanitize_text_field($item_values['selected_date_event'])); 
} 

コードは、任意のプラグインファイルでも、あなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイルになりますか。

このコードはテスト済みであり、動作します。

これは、注文受注、マイアカウント注文表示、および電子メール通知の注文明細データに表示されます。

0
add_filter('woocommerce_add_cart_item_data', 'aa_func_20170206100217', 10, 3); 
function aa_func_20170206100217($cart_item_data, $product_id, $variation_id) { 
    $data = $_POST; 

    if (isset($data[ 'selected_date_event' ])) { 
     $selected_date_event = [ 
      'selected_date_event' => $data[ 'selected_date_event' ] 
     ]; 

     return array_merge($cart_item_data, $selected_date_event); 
    } 

    return $cart_item_data; 
} 
add_filter('woocommerce_get_cart_item_from_session', function ($cartItemData, $cartItemSessionData, $cartItemKey) { 
    if (isset($cartItemSessionData['selected_date_event'])) { 
     $cartItemData['selected_date_event'] = $cartItemSessionData['selected_date_event']; 
    } 

    return $cartItemData; 
}, 10, 3); 

add_filter('woocommerce_get_item_data', function ($data, $cartItem) { 
    if (isset($cartItem['selected_date_event'])) { 
     $data[] = array(
      'name' => 'selected_date_event', 
      'value' => $cartItem['selected_date_event'] 
     ); 
    } 

    return $data; 
}, 10, 2); 

add_action('woocommerce_add_order_item_meta', function ($itemId, $values, $key) { 
    if (isset($values['myCustomData'])) { 
     wc_add_order_item_meta($itemId, 'selected_date_event', $values['selected_date_event']); 
    } 
}, 10, 3); 
関連する問題