// 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' => 'variation_max_discont[' . $variation->ID . ']',
'label' => __( 'Максимальная скидка для расчётов', 'woocommerce' ),
'placeholder' => '%',
'desc_tip' => 'true',
'description' => __( 'Максимальная скидка для этой вариации', 'woocommerce' ),
'value' => get_post_meta( $variation->ID, 'variation_max_discont', 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['variation_max_discont'][ $post_id ];
if( ! empty( $text_field ) ) {
update_post_meta( $post_id, 'variation_max_discont', 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 ) );
// }
}
// Add New Variation Settings
add_filter( 'woocommerce_available_variation', 'load_variation_settings_fields' );
/**
* Add custom fields for variations
*
*/
function load_variation_settings_fields( $variations ) {
// duplicate the line for each field
$variations['variation_max_discont'] = get_post_meta( $variations[ 'variation_id' ], 'variation_max_discont', true );
return $variations;
}
<div class="woocommerce-variation-custom-text-field">
{{{ data.variation.variation_max_discont }}}
</div>