web-dev-qa-db-fra.com

Comment ajouter un menu déroulant pays au profil de l'utilisateur?

J'ai ajouté cet extrait de code à mon functions.php

function my_new_contactmethods( $contactmethods ) {  
    $contactmethods['country'] = 'country';
    return $contactmethods;
}
add_filter('user_contactmethods','my_new_contactmethods',10,1);

Cela fonctionne parfaitement comme je le voulais. Il affiche un champ supplémentaire permettant de renseigner le pays utilisateur sur le profil du compte utilisateur.

Mais c'est juste un champ de texte. En fait, je souhaite afficher ce champ sous forme de menu déroulant contenant tous les pays.

Comment puis-je modifier ce code pour obtenir un menu déroulant de liste de pays?

1
Riffaz Starr

Essaye ça

/* Save selected data */
add_action( 'personal_options_update', 'save_user_fields' );
add_action( 'edit_user_profile_update', 'save_user_fields' );

function save_user_fields( $user_id ) {

if ( !current_user_can( 'edit_user', $user_id ) )
    return false;

update_usermeta( $user_id, 'country', $_POST['country'] );
}

add_action( 'show_user_profile', 'Add_user_fields' );
add_action( 'edit_user_profile', 'Add_user_fields' );

function Add_user_fields( $user ) {

?>

<h3>Additional Field</h3>
<table class="form-table">       

    <tr>
        <th><label for="dropdown">Select field</label></th>
        <td>
            <?php 
            //get dropdown saved value
            $selected = get_the_author_meta( 'country', $user->ID ); 
            ?>
            <select name="country" id="country">
                <option value="Argentina" <?php echo ($selected == "Argentina")?  'selected="selected"' : ''; ?>>Argentina</option>
                <option value="Belgium" <?php echo ($selected == "Belgium")?  'selected="selected"' : ''; ?>>Belgium</option>
                <option value="countryX" <?php echo ($selected == "countryX")?  'selected="selected"' : ''; ?>>country X</option>
            </select>
            <span class="description">Select the above</span>
        </td>
    </tr>
</table>
<?php 
}
?>

J'espère que cela fait votre travail.

2
Shreyo Gi