web-dev-qa-db-fra.com

Comment changer l'avatar de l'utilisateur?

Est-il possible de changer l'avatar d'un utilisateur sans plugins? Pourquoi n'y a-t-il pas de section "Téléchargement d'avatar" dans Utilisateurs> Votre profil?

Je ne peux pas utiliser de plugin. Suis-je aveugle ou obligé d'utiliser Gravatar? ; /

5
Wordpressor

Les avatars sont destinés à être contrôlés par l'utilisateur, pas par vous. Donc oui, d'une certaine manière, vous êtes obligé d'utiliser le service Gravatar. Mais rappelez-vous, cela donne à l'utilisateur la possibilité d'utiliser le même avatar n'importe où, et vous pouvez toujours restreindre l'affichage d'un gravatar en fonction des évaluations de contenu (G, PG, PG-13, R).

Gravatar est un service hébergé, c'est pourquoi il n'y a pas de section "Télécharger un avatar" dans le profil.

Vous dites que "vous ne pouvez pas utiliser un plugin", mais c'est vraiment le seul moyen d'ajouter des fonctionnalités. Si vous voulez utiliser quelque chose de autre que Gravatar, vous devrez charger un plug-in pour le prendre en charge. Il existe quelques plug-ins prenant en charge les avatars locaux:

Autrement, je vous recommande d’éduquer vos utilisateurs sur ce que sont les Gravatars et comment les utiliser.

6
EAMann

Si vous demandez comment remplacer le gravatar par défaut par l'un des vôtres, vous pouvez insérer ce code dans le fichier functions.php (ou, mieux encore, le fichier custom-functions.php si votre thème le prend en charge).

add_filter( 'avatar_defaults', 'customgravatar' );

function customgravatar ($avatar_defaults) {
$myavatar = get_home_url('Template_directory') . '/images/mycustomgravatar.jpg';
$avatar_defaults[$myavatar] = "My Custom Logo";
return $avatar_defaults;
}

Créez un fichier image et chargez-le dans le répertoire image de votre site. Le "Mon logo personnalisé" est l’étiquette de cette option dans la section "Discussion" de votre tableau de bord. De cette façon, tout utilisateur n'ayant pas de gravatar aura le logo de votre site à la place.

6
Ray Mitchell

Vous avez besoin d’un peu plus de code pour que le hook avatar_defaults fonctionne que pour la réponse Ray Mitchell, j’ai trouvé ce code sur le pages codex wordpress et cela a bien fonctionné grâce à l’ID utilisateur normalisé transmis au hook par défaut pour avatar. (cela fonctionne soit avec un simple identifiant d'utilisateur, soit avec un email ET avec l'utilisateur de l'objet lui-même)

    // Apply filter
add_filter( 'get_avatar' , 'my_custom_avatar' , 1 , 5 );

function my_custom_avatar( $avatar, $id_or_email, $size, $default, $alt ) {
    $user = false;

    if ( is_numeric( $id_or_email ) ) {

        $id = (int) $id_or_email;
        $user = get_user_by( 'id' , $id );

    } elseif ( is_object( $id_or_email ) ) {

        if ( ! empty( $id_or_email->user_id ) ) {
            $id = (int) $id_or_email->user_id;
            $user = get_user_by( 'id' , $id );
        }

    } else {
        $user = get_user_by( 'email', $id_or_email );   
    }

    if ( $user && is_object( $user ) ) {

        if ( $user->data->ID == '1' ) {
            $avatar = 'YOUR_NEW_IMAGE_URL';
            $avatar = "<img alt='{$alt}' src='{$avatar}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
        }

    }

    return $avatar;
}
1
jilt

J'ai remarqué que cela dépend du thème activé. Aucune option dans le thème Mantra par exemple, mais il existe une option dans le thème par défaut de buddypress.

0
mirola

Vous pouvez le faire ... Vous devez ajouter l'image à votre média. Copiez cette URL de fichier multimédia et collez-la/liez-la à l'URL de votre avatar d'utilisateur personnalisé sous Modifier l'utilisateur. Triés!

0
sherise

Ajoutez votre fichier avatar.jpg à votre dossier d'images de thèmes enfants et le code suivant à votre fichier de fonctions thèmes d'enfants:

add_filter( 'get_avatar' , 'add_custom_avatar' , 1 , 5 );

function add_custom_avatar( $avatar, $id_or_email, $size, $default, $alt ) {
    $user = false;

    if ( is_numeric( $id_or_email ) ) {

        $id = (int) $id_or_email;
        $user = get_user_by( 'id' , $id );

    } elseif ( is_object( $id_or_email ) ) {

        if ( ! empty( $id_or_email->user_id ) ) {
            $id = (int) $id_or_email->user_id;
            $user = get_user_by( 'id' , $id );
        }

    } else {
        $user = get_user_by( 'email', $id_or_email );   
    }

    if ( $user && is_object( $user ) ) {

        if ( $user->data->ID == '1' ) {
            $avatar = sprintf( '%s/images/avatar.jpg', get_stylesheet_directory_uri() );
            $avatar = "<img alt='{$alt}' src='{$avatar}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
        }

    }

    return $avatar;
}
0
Dev

Je sais que sur un site de projet, j'ai pu créer un champ sur la page de l'éditeur de profil utilisateur permettant d'accepter un chemin d'image (chargé via la page de média si je me souviens bien) pouvant être utilisé pour les avatars. Aucun plugin nécessaire.

0
tw2113