web-dev-qa-db-fra.com

get_user_meta Section du profil court

Ok, j'ai donc ajouté un champ personnalisé à la page de profil d'édition des utilisateurs, où ils peuvent ajouter un lien vers l'URL d'une image qu'ils veulent. Je l'utilise actuellement pour les contributeurs et au-dessus, mais j'ai également une petite boîte de profil sur mon site qui obtient un avatar d'utilisateurs de gravatar. J'ai utilisé le code d'avant mais je l'ai changé pour obtenir le nom actuel des utilisateurs connectés ou obtenir le gravatar. Voir le code ci-dessous

$profilepic = get_user_meta('author_pic');
$imgtagbeg = ('<img style="height:52px; width:52px" src="');
$imgtagend = ('"/>');
    if ($profilepic)
        echo $imgtagbeg,$profilepic,$imgtagend; 
    else
        echo get_avatar( $user_email, '52', $default = 'http://www.gravatar.com/avatar.php?gravatar_id=$md5&size=80&default=$default' );

Ce que je veux faire, c'est si l'utilisateur actuel connecté a un avatar lié dans son champ de profil, puis l'utiliser au lieu de gravatar. Mais si l'auteur a un gravatar et a laissé le champ vide dans le profil, utilisez-le ou obtenez le gravatar par défaut

Mise à jour: Qu'en est-il quelque chose comme ça

$userpic = '<img src="link/to/author_pics/$userid.png"';
    if ($userpic)
        echo $userpic;
    else
        echo get_avatar( $user_email, '52', $default = 'http://www.gravatar.com/avatar.php?gravatar_id=$md5&size=80&default=$default' );

Au lieu de s’appuyer sur un champ utilisateur, il suffit de télécharger une image dans un répertoire et d’utiliser userid comme nom de fichier, puis de la charger, sinon d’utiliser gravatar. Cela fonctionnerait-il?.

UPDATE 2:

$userpiccur = wp_get_current_user();
$userpicloc = 'http://avatars.mydomain.com/';
$userpictyp = '.png';
$userpicurl = $userpicloc . $userpiccur->user_login . $userpictyp;
$header_response = get_headers($userpicurl, 1);
$userpicbeg = '<img style="height:52px; width:52px" src="http://avatars.mydomain.com/';
$userpicend = '.png"/>';
if ( strpos( $header_response[0], "404" ) !== false )
    echo $userpicbeg,$userpiccur->user_login,$userpicend;
else
    echo get_avatar( $user_email, '52', $default = 'http://www.gravatar.com/avatar.php?gravatar_id=$md5&size=80&default=$default' );
1
xLRDxREVENGEx

Ok, donc je travaille comme je veux. Il ne me reste plus qu'à déterminer si je veux qu'un utilisateur puisse y télécharger sa propre image ou non.

<?
$userpiccur = wp_get_current_user();
$userpicloc = 'http://avatars.mydomain.com/';
$userpictyp = '.png';
$userpicurl = $userpicloc.$userpiccur->user_login.$userpictyp;
$userpicbeg = '<img class="avatar avatar-52 photo" style="height:52px; width:52px" src="';
$userpicend = '"/>';
if (@fopen($userpicurl, "r"))
    echo  $userpicbeg,$userpicurl,$userpicend;
else
    echo get_avatar( $user_email, '52', $default = 'http://www.gravatar.com/avatar.php?gravatar_id=$md5&size=80&default=$default' );
?>
0
xLRDxREVENGEx

De la base:

function get_user_meta($user_id, $key, $single = false) {
    return get_metadata('user', $user_id, $key, $single);
}

Passez l'ID utilisateur en tant que premier argument, la clé 'author_pic' en tant que second et TRUE en tant que troisième (pour obtenir une valeur de chaîne).

1
fuxia

Votre code dans la partie d'édition de la question devrait fonctionner, ainsi que votre première partie, mais vous devez ajouter l'ID utilisateur à la fonction get_user_meta () , alors utilisez votre premier code mais changez la première ligne en ceci:

$profilepic = get_user_meta($user_id,'author_pic',true);

et assurez-vous que $ user_id contient l'ID actuel de l'utilisateur.

1
Bainternet