将自定义维度字段添加到变量产品的每个变体设置

将自定义维度字段添加到变量产品的每个变体设置

问题描述:

我试图向每个产品变体设置添加“内置维度”字段。将自定义维度字段添加到变量产品的每个变体设置

这里是什么,我试图完成一个模拟: Here's a mock of what I'm trying to accomplish.

我已经按照这些下面的提示,但他们没有做完全是我想要的:

这些将其添加到其他数据选项卡之一。我需要每个变化。每种变体都有内置尺寸和运输尺寸。

随着2个上钩功能下,你会得到你期待什么样的模拟:

// Add variation custom "dimentions" fields 
add_action('woocommerce_variation_options_dimensions','add_variation_options_built_dimensions', 10, 3); 
function add_variation_options_built_dimensions($loop, $variation_data, $variation){ 

    $variation_built_lenght = get_post_meta($variation->ID,"_built_lenght", true); 
    if(! $variation_built_lenght) $variation_built_lenght = ""; 

    $variation_built_width = get_post_meta($variation->ID,"_built_width", true); 
    if(! $variation_built_width) $variation_built_width = ""; 

    $variation_built_height = get_post_meta($variation->ID,"_built_height", true); 
    if(! $variation_built_height) $variation_built_height = ""; 

    ?> 
    <p class="form-field form-row dimensions_field built_dimensions hide_if_variation_virtual form-row-last"> 

     <label for="product_built_length"><?php 
      // translators: %s: dimension unit 
      printf(
       __('Built dimensions (L&times;W&times;H) (%s)', 'woocommerce'), 
       get_option('woocommerce_dimension_unit') 
      ); 
     ?></label> 

     <?php echo wc_help_tip(__('Built length x width x height in decimal form', 'woocommerce')); ?> 
     <span class="wrap"> 

      <input id="product_built_length" placeholder="<?php esc_attr_e('Built length', 'woocommerce'); ?>" class="input-text wc_input_decimal" size="6" type="text" name="built_lenght_<?php echo $loop; ?>" value="<?php echo esc_attr($variation_built_lenght); ?>" /> 

      <input placeholder="<?php esc_attr_e('Built width', 'woocommerce'); ?>" class="input-text wc_input_decimal" size="6" type="text" name="built_width_<?php echo $loop; ?>" value="<?php echo esc_attr($variation_built_width); ?>" /> 

      <input placeholder="<?php esc_attr_e('Built height', 'woocommerce'); ?>" class="input-text wc_input_decimal last" size="6" type="text" name="built_height_<?php echo $loop; ?>" value="<?php echo esc_attr($variation_built_height); ?>" /> 

     </span> 

    </p> 
    <?php 

} 



    //Save variation custom "dimentions" fields 
add_action('woocommerce_save_product_variation','save_variation_options_built_dimensions', 10 ,2); 
function save_variation_options_built_dimensions($variation_id, $loop){ 

    $built_lenght = $_POST["built_lenght_$loop"]; 
    if(!empty($built_lenght)) 
     update_post_meta($variation_id, '_built_lenght', sanitize_text_field($built_lenght)); 

    $built_width = $_POST["built_width_$loop"]; 
    if(!empty($built_width)) 
     update_post_meta($variation_id, '_built_width', sanitize_text_field($built_width)); 

    $built_height = $_POST["built_height_$loop"]; 
    if(!empty($built_height)) 
     update_post_meta($variation_id, '_built_height', sanitize_text_field($built_height)); 
} 

代码放在您的活动子主题(或主题)的function.php文件或还任何插件文件。

此代码已经过测试,适用于WooCommerce 2.6.x和3+。

你会得到这样的:

enter image description here