Via the code below I have added radio buttons on the on the profile page of My account in WooCommerce.
The issue is I can't make the radio button required & can't display a notice when no choice is made.
Here is my code...
HTML
// Add & display radio
<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<div class="myAccount_radiobtn">
<label for="gender"><?php esc_html_e( 'Gender', '' ); ?> <span class="required">*</span></label>
<div class="my_account_profile_radio">
<input type="radio" required name="gender" id="gender value="Male" <?php if('Male'==esc_attr(get_the_author_meta('gender',$user->ID ))) echo 'checked="checked"'; ?> class="radio" /> Male<br />
<input type="radio" required name="gender" id="gender value="Female" <?php if('Female'==esc_attr(get_the_author_meta('gender',$user->ID ))) echo 'checked="checked"'; ?> class="radio" /> Female<br />
<input type="radio" required name="gender" id="gender value="Others" <?php if ('Others'==esc_attr(get_the_author_meta('gender',$user->ID ))) echo 'checked="checked"'; ?> class="radio" /> Others
</div>
</div>
</p>
PHP
// Save radio
function save_user_account_details( $user_id ) {
if( isset( $_POST['gender'] ) )
update_user_meta( $user_id, 'gender', sanitize_text_field( $_POST['gender'] ) );
}
add_action( 'woocommerce_save_account_details', 'save_user_account_details', 12, 1 );
// Validation radio
function myaccount_fields_validation2 ( $errors ) {
if ( isset( $_POST['gender'] ) ) {
if(strlen($_POST['gender'])<4 )
$errors->add( 'error', __( '<strong>Gender</strong> is a required field.', '' ),'');
}
}
add_action( 'user_profile_update_errors','myaccount_fields_validation2', 10, 1 );
Any advice?