2017-07-18 1 views
3

J'essaie d'ajouter un champ "Dimensions intégrées" à chaque paramètre de variation du produit.Ajout de champs de dimension personnalisés à chaque paramètre de variation pour les produits variables

est ici une maquette de ce que je suis en train d'accomplir: Here's a mock of what I'm trying to accomplish.

J'ai suivi ces conseils suivants, mais ils ne font pas tout à fait ce que je veux:

Ceux-ci l'ajoutent à l'un des autres onglets de données. J'en ai besoin par variation. Chaque variation a une dimension construite et une dimension d'expédition.

Répondre

1

Avec les 2 fonctions crochu ci-dessous vous obtiendrez exactement ce que vous attendez comme dans votre maquette:

// 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)); 
} 

du code dans le fichier function.php de votre thème enfant actif (ou le thème) ou aussi dans n'importe quel fichier plugin.

Ce code a été testé et fonctionne pour WooCommerce 2.6.x et 3+.

Vous obtiendrez ceci:

enter image description here