Skip to main content

Add custom fields to product variations

 





// Add Variation Settings

add_action( 'woocommerce_product_after_variable_attributes', 'variation_settings_fields', 10, 3 );


// Save Variation Settings

add_action( 'woocommerce_save_product_variation', 'save_variation_settings_fields', 10, 2 );


/**

 * Create new fields for variations

 *

*/

function variation_settings_fields( $loop, $variation_data, $variation ) {


// Text Field

woocommerce_wp_text_input( 

array( 

'id'          => '_text_field[' . $variation->ID . ']', 

'label'       => __( 'My Text Field', 'woocommerce' ), 

'placeholder' => 'http://',

'desc_tip'    => 'true',

'description' => __( 'Enter the custom value here.', 'woocommerce' ),

'value'       => get_post_meta( $variation->ID, '_text_field', true )

)

);


// Number Field

woocommerce_wp_text_input( 

array( 

'id'          => '_number_field[' . $variation->ID . ']', 

'label'       => __( 'My Number Field', 'woocommerce' ), 

'desc_tip'    => 'true',

'description' => __( 'Enter the custom number here.', 'woocommerce' ),

'value'       => get_post_meta( $variation->ID, '_number_field', true ),

'custom_attributes' => array(

'step' => 'any',

'min' => '0'

)

);


// Textarea

woocommerce_wp_textarea_input( 

array( 

'id'          => '_textarea[' . $variation->ID . ']', 

'label'       => __( 'My Textarea', 'woocommerce' ), 

'placeholder' => '', 

'description' => __( 'Enter the custom value here.', 'woocommerce' ),

'value'       => get_post_meta( $variation->ID, '_textarea', true ),

)

);


// Select

woocommerce_wp_select( 

array( 

'id'          => '_select[' . $variation->ID . ']', 

'label'       => __( 'My Select Field', 'woocommerce' ), 

'description' => __( 'Choose a value.', 'woocommerce' ),

'value'       => get_post_meta( $variation->ID, '_select', true ),

'options' => array(

'one'   => __( 'Option 1', 'woocommerce' ),

'two'   => __( 'Option 2', 'woocommerce' ),

'three' => __( 'Option 3', 'woocommerce' )

)

)

);


// Checkbox

woocommerce_wp_checkbox( 

array( 

'id'            => '_checkbox[' . $variation->ID . ']', 

'label'         => __('My Checkbox Field', 'woocommerce' ), 

'description'   => __( 'Check me!', 'woocommerce' ),

'value'         => get_post_meta( $variation->ID, '_checkbox', true ), 

)

);


// Hidden field

woocommerce_wp_hidden_input(

array( 

'id'    => '_hidden_field[' . $variation->ID . ']', 

'value' => 'hidden_value'

)

);


}


/**

 * Save new fields for variations

 *

*/

function save_variation_settings_fields( $post_id ) {


// Text Field

$text_field = $_POST['_text_field'][ $post_id ];

if( ! empty( $text_field ) ) {

update_post_meta( $post_id, '_text_field', esc_attr( $text_field ) );

}

// Number Field

$number_field = $_POST['_number_field'][ $post_id ];

if( ! empty( $number_field ) ) {

update_post_meta( $post_id, '_number_field', esc_attr( $number_field ) );

}


// Textarea

$textarea = $_POST['_textarea'][ $post_id ];

if( ! empty( $textarea ) ) {

update_post_meta( $post_id, '_textarea', esc_attr( $textarea ) );

}

// Select

$select = $_POST['_select'][ $post_id ];

if( ! empty( $select ) ) {

update_post_meta( $post_id, '_select', esc_attr( $select ) );

}

// Checkbox

$checkbox = isset( $_POST['_checkbox'][ $post_id ] ) ? 'yes' : 'no';

update_post_meta( $post_id, '_checkbox', $checkbox );

// Hidden field

$hidden = $_POST['_hidden_field'][ $post_id ];

if( ! empty( $hidden ) ) {

update_post_meta( $post_id, '_hidden_field', esc_attr( $hidden ) );

}


}

Comments

Popular posts from this blog

add custom post type

/**  *  * add custom post type  *  */ function my_custom_post_product() {   $labels = array(     'name'               => _x( 'Products', 'post type general name' ),     'singular_name'      => _x( 'Product', 'post type singular name' ),     'add_new'            => _x( 'Add New', 'book' ),     'add_new_item'       => __( 'Add New Product' ),     'edit_item'          => __( 'Edit Product' ),     'new_item'           => __( 'New Product' ),     'all_items'          => __( 'All Products' ),     'vi...

Toolset conditional

[wpv- if evaluate= "'[wpv-current-user info='id']' = '[wpv-post-author format='meta' meta='ID']' OR '[wpv-current-user info='role']' = 'administrator'" ]      //the content you want to hide goes here [/wpv- if ]