bluvertigo
4/10/2015 - 7:18 AM

Inserire campo personalizzato nelle variazioni / WooCommerce Custom Fields for Variations - https://support.woothemes.com/hc/en-us/articles/

Inserire campo personalizzato nelle variazioni / WooCommerce Custom Fields for Variations - https://support.woothemes.com/hc/en-us/articles/203402957-How-to-create-WooCommerce-Custom-Fields-for-Variations

<?php
<?php
//JS to add fields for new variations
add_action('woocommerce_product_after_variable_attributes_js', 'variable_fields_js');
//Save variation fields
add_action('woocommerce_process_product_meta_variable', 'save_variable_fields', 10, 1);
add_action('woocommerce_variation_options', 'variable_fields', 10, 3);
/**
 * Create new fields for variations
 *
 */
function variable_fields($loop, $variation_data, $variation)
{
?>
<tr>
<td>
<?php
    // Number Field
    woocommerce_wp_text_input(array(
        'id' => '_number_field[' . $loop . ']',
        'label' => __('Numero perzzi per confezione', 'woocommerce'),
        'desc_tip' => 'true',
        'description' => __('Inserisci il numero di pezzi che sono nella confezione.<br>Il costo di ogni singolo elemento verrà calcolato in modo automatico', 'woocommerce'),
        'value' => get_post_meta($variation->ID, '_number_field', true),
        'custom_attributes' => array(
            'step' => 'any',
            'min' => '0'
        )
    ));
?>
</td>
</tr>
<?php
}

/**
 * Create new fields for new variations
 *
 */
function variable_fields_js()
{
?>
<tr>
<td>
<?php
    var_dump(get_post_meta(5075, '_number_field'));
    // Number Field
    woocommerce_wp_text_input(array(
        'id' => '_number_field[ + loop + ]',
        'label' => __('Numero perzzi per confezione', 'woocommerce'),
        'desc_tip' => 'true',
        'description' => __('Inserisci il numero di pezzi che sono nella confezione.<br>Il costo di ogni singolo elemento verrà calcolato in modo automatico', 'woocommerce'),
        'value' => $variation_data['_number_field'][0],
        'custom_attributes' => array(
            'step' => 'any',
            'min' => '0'
        )
    ));
?>
</td>
</tr>
<?php
}

/**
 * Save new fields for variations
 *
 */
function save_variable_fields($post_id)
{
    if (isset($_POST['variable_sku'])) {
        $variable_sku     = $_POST['variable_sku'];
        $variable_post_id = $_POST['variable_post_id'];
        
        // Number Field
        $_number_field = $_POST['_number_field'];
        for ($i = 0; $i < sizeof($variable_sku); $i++) {
            $variation_id = (int) $variable_post_id[$i];
            if (isset($_number_field[$i])) {
                update_post_meta($variation_id, '_number_field', stripslashes($_number_field[$i]));
            }
        }
    }
}
?>