2017-09-10 1 views
0

ユースケース:Woocommerce:woocommerce_add_to_cartフックでどのようにwc_add_order_item_metaですか?

  1. ユーザーwoocommerce_add_to_cartが引き金となり、
  2. 日はwc_add_order_item_metaによってメタとして項目に追加リストから製品の日付を選択し、

  3. ボタンでカートに 製品が追加されます

    add_action('woocommerce_add_to_cart', 'add_event_date_meta', 10, 3); 
    
    function add_event_date_meta($cart_item_key, $product_id, $quantity) { 
        $event_date = get_cart_item_event_date(); 
        $result = wc_add_order_item_meta($product_id, '_event_date', $event_date); 
    } 
    

$結果は有効なID、ない「_eveですnt_date 'メタはチェックアウトカートの項目に含まれています。私が正しく理解していないものはありますか?私はそれのIDを受け取っている間、メタアイテムのキーをカートアイテムに追加する必要がありますか?

+1

まだ注文アイテムがない場合、注文アイテムメタを追加することはできません。カスタムチェックアウトのフィールドについては、[チュートリアル](https://www.kathyisawesome.com/woocommerce-customize-checkout-fields/)をご覧ください。 「チェックアウト時に余分なデータを保存する」をチェックしてください。 – helgatheviking

+1

@helgatheviking ...私は間違っているかもしれませんが、これは商品カスタムフィールド**に関連していますがカスタムチェックアウトフィールドには関連しないと思います** Opは最初にこのデータをカートに追加ボタンで送信します。次に、このデータをカートオブジェクトに保存してから、カートから関連するオーダーアイテムにデータを取得する必要があります。 – LoicTheAztec

+1

ええ、あなたは正しいと思います。私は[チュートリアルもあります!](https://www.kathyisawesome.com/add-a-custom-field-to-woocommerce-product/)。いずれにしても、注文アイテムがない場合は、注文アイテムメタを追加することはできません。 – helgatheviking

答えて

0

ありがとうございましたhelgathevikingLoicTheAztecあなたのコメントです。私がhelgathevikingtutorialで見つけた解決策。これはまさに私が探していたものです:

/* 
    * Add custom data to the cart item 
    * @param array $cart_item 
    * @param int $product_id 
    * @return array 
    */ 
    function kia_add_cart_item_data($cart_item, $product_id){ 
     if(isset($_POST['_custom_option'])) { 
      $cart_item['custom_option'] = sanitize_text_field($_POST['_custom_option']); 
     } 
     return $cart_item; 
    } 
    add_filter('woocommerce_add_cart_item_data', 'kia_add_cart_item_data', 10, 2); 
関連する問題