web-dev-qa-db-fra.com

Comment ajoutez-vous une option personnalisée aux données utilisateur?

J'aimerais ajouter des avatars à mes utilisateurs. J'ai un groupe limité sur un site sur lequel je travaille. Le téléchargement n'est pas vraiment un problème, nous pouvons simplement placer les images sur le serveur et utiliser des URL pour définir nos avatars (seules environ 5 personnes pourront réellement poster.). Cela dit, comment puis-je ajouter un champ à la page utilisateur, ils peuvent remplir avec une URL d'image qui peut ensuite être récupérée plus tard. Je sais que vous pouvez récupérer les données utilisateur via la fonction the_author_meta();, mais comment puis-je ajouter un champ utilisateur personnalisé pouvant être rempli et inséré dans la base de données associée à l'utilisateur?

Ou serait-il préférable d'utiliser quelque chose qui existe déjà, comme le champ aim, par exemple, car aucun d'entre nous ne le renseignera.

3
Jem

Pour ajouter un champ à la page de modification de profil/utilisateur, vous devez utiliser les hooks edit_user_profile et show_user_profile pour:

add_action( 'show_user_profile', 'my_extra_user_fields' );
add_action( 'edit_user_profile', 'my_extra_user_fields' );
function my_extra_user_fields( $user ) 
{ ?>
    <h3>User avatar</h3>

    <table class="form-table">
        <tr>
            <th><label for="user_avatar">User avatar</label></th>
            <td>
                <input id="user_avatar" name="user_avatar" type="text" value="
                    <?php $user_avatar = get_the_author_meta( 'user_avatar', $user->ID ); 
                        echo $user_avatar ? $user_avatar : '';?>" />
                <span class="description"><?php _e("Please enter Avatar URL."); ?></span>
            </td>
        </tr>
    </table>
<?php }

puis pour sauvegarder ce champ, vous devez utiliser personal_options_update hook et edit_user_profile_update hook afin:

add_action( 'personal_options_update', 'save_my_extra_user_fields' );
add_action( 'edit_user_profile_update', 'save_my_extra_user_fields' );

function save_my_extra_user_fields( $user_id ) 
{
    if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }else{

        if(isset($_POST['user_avatar']) && $_POST['user_avatar'] != ""){
            update_usermeta( $user_id, 'user_avatar', $_POST['user_avatar'] );
        }
    }
}

et comme vous le savez déjà, vous pouvez exploiter ces données en utilisant the_author_meta() ou get_user_meta()

1
Bainternet