2017-07-22 6 views
0

現在、バリエーションにはwoocommerce_product_after_variable_attributeswoocommerce_save_product_variationGuide hereのメタデータが追加されています。Wordpress 3.1の製品バリエーションのメタデータ

function custom_woocommerce_product_after_variable_attributes($loop, $variation_data, $variation) 
{ 
    woocommerce_wp_select([ 
     'id' => 'field_1['.absint($variation->ID).']', 
     'label' => 'Field 1 ', 
     'value' => get_post_meta(absint($variation->ID), 'field_1', true), 
     'options' => [ 
      '1' => '1', 
      '2' => '2', 
      '3' => '3', 
     ], 
    ]); 
} 
add_action('woocommerce_product_after_variable_attributes', 'custom_woocommerce_product_after_variable_attributes', 10, 3); 

function custom_woocommerce_save_product_variation($post_id) 
{ 
    $field1 = $_POST['field_1'][$post_id]; 
    if (! empty($field1)) { 
     update_post_meta(absint($post_id), 'field_1', esc_html($field1)); 
    } 
} 
add_action('woocommerce_save_product_variation', 'custom_woocommerce_save_product_variation', 10, 2); 

次に、バリエーションを変更したときには、single_variation_wrapに接続されています。これは3.0.5ではうまくいきましたが、jsで3.1.1に更新して以来、私はもはやバリエーションのためのカスタムメタデータを取得していません。

$('.single_variation_wrap').on('show_variation', function(event, variation) { 
    console.log(variation.meta_data); 
}); 

meta_dataの情報は存在しません。

誰にもこの修正がありますか?どんな助けもありがとう。

+0

ありがとうございます@LoicTheAztec、私は関連情報で自分の質問を更新しました。 – Pulkit

答えて

0

フィルタを追加することでこれを解決できました。

function custom_woocommerce_available_variation($variations, $product, $variation) 
{ 
    $metadata = $variation->get_meta_data(); 
    if (!empty($metadata)) { 
     $variations = array_merge($variations, [ 
      'meta_data' => $metadata, 
     ]); 
    } 

    return $variations; 
} 
add_filter('woocommerce_available_variation', 'custom_woocommerce_available_variation', 10, 3); 
関連する問題