My site is both English and Latvian. How to add frontend dropdown on registration form where users can choose their preferred language (the language they receive WP emails, etc.)?

add_filter( 'locale', 'set_my_locale' );
function set_my_locale( $lang ) {
  if ( 'gl' == $_GET['latvian'] ) {
    // set to Latvian
    return 'ka_LV';
  } else {
    // return original language
    return $lang;

Can someone point out how to adjust this code, so there is a dropdown on frontend registration?

I did find this code that can add custom fields to registration, but don't know how to adjust it to add the language dropdown.

//Aggiunta del nuovo elemento al form di registrazione

    function myplugin_register_form (){
        $hobby = ( isset( $_POST['hobby'] ) ) ? $_POST['hobby']: ''; //salvataggio del campo hobby
            <label for="hobby"><?php _e('Hobby principale','registrazione-utenti') ?><br />
                <input type="text" name="hobby" id="hobby" class="input" value="<?php echo esc_attr(stripslashes($hobby)); ?>" size="25" /></label>

    // Validazione dei dati inseriti.
    add_filter('registration_errors', 'myplugin_registration_errors', 10, 3);
    function myplugin_registration_errors ($errors, $sanitized_user_login, $user_email) {

        if ( empty( $_POST['hobby'] ) ) // il campo hobby è obbligatorio e non può essere vuoto
            $errors->add( 'hobby_error', __('<strong>ERROR</strong>: Devi inserire un hobby principale','registrazione-utenti') );

        return $errors;


    // Salvataggio dei dati
    add_action('user_register', 'myplugin_user_register');
    function myplugin_user_register ($user_id) {
        if ( isset( $_POST['hobby'] ) )
            update_user_meta($user_id, 'hobby', $_POST['hobby']);

 * Visualizzazione dei dati aggiuntivi nel back end
 * */

 add_action('show_user_profile','show_the_new_meta_values'); // hook usato quando un utente sta visualizzando il proprio profilo
 add_action('edit_user_profile','show_the_new_meta_values'); // hook usato quando un utente sta visualizzando il profilo di un altro utente

 function show_the_new_meta_values($user)

    $hobby= get_user_meta($user->ID,'hobby', true);
    <h3><?php _e('Informazioni aggiuntive','registrazione-utenti')?></h3>
        <table class="form-table">
                <th><label for="hobby"><?php _e('Hobby principale','registrazione-utenti') ?></label></th>
                <td><input type="text" name="hobby" id="hobby" value="<?php echo esc_attr($hobby); ?>" class="regular-text" /></td>

 //aggiornamento dei dati
add_action('personal_options_update', 'update_the_new_meta_values');
add_action('edit_user_profile_update', 'update_the_new_meta_values');

function update_the_new_meta_values($user_id)

    $new_value = $_POST['hobby'];

    update_user_meta($user_id,'hobby',$new_value); // dati aggiornati

    if ( get_user_meta($user_id,  'hobby', true ) != $new_value ) // controlla che i dati siano stati salavati nel db
    wp_die(__( 'Errore nel Database','registrazione-utenti' ) );

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.