web-dev-qa-db-fra.com

Alternative à l’utilisation de la fonction get_avatar?

J'ai utilisé un hack WP pour afficher les photos de l'auteur. Par exemple, mon single.php a un slug d'auteur qui affiche la photo de l'auteur.

J'ai créé un dossier appelé auteurs dans mon dossier thème/images. En fonction de l'ID de l'auteur, je nomme les fichiers 1.jpg, 2.jpg, etc.

Donc, j'appelle cette image

<img src="<?php bloginfo('template_directory') ?>/images/authors/<?php the_author_ID()?>.jpg" alt="<?php the_author(); ?>">

Maintenant, je modifie un plugin qui affiche les auteurs dans la barre latérale. Cependant, ce plugin utilise la fonction get_avatar, qui est la suivante:

/**
                 * If show avatar option is checked, add get_avatar function to cache.
                 */
                if($jmetc_options['show_avatar'] == 1) {
                    $jmevar['cache'] .= get_avatar($tc->comment_author_email, $jmetc_options['avatar_size']);
                }

Quelqu'un peut-il me conseiller sur l'utilisation/la modification de get_avatar afin d'utiliser le code par défaut que j'utilise?

7
Sledge81

La fonction get_avatar() applique un crochet de filtre get_avatar que vous pouvez utiliser pour modifier le balisage de l'avatar:

return apply_filters('get_avatar', $avatar, $id_or_email, $size, $default, $alt);

Je (pense) ce serait la bonne façon de se connecter à ce filtre:

function mytheme_get_avatar( $avatar ) {
    $avatar = '<img src="<' . get_template_directory_uri() . '/images/authors/' . get_the_author_ID() . '.jpg" alt="' . get_the_author() . '">';
    return $avatar;
}
add_filter( 'get_avatar', 'mytheme_get_avatar' );

EDIT

p.s. Une alternative intéressante à cette approche pourrait être le Simple Local Avatars Plugin.

EDIT 2

Le filtre est appliqué en utilisant add_filter(), pas apply_filters(). C'était une faute de ma part; corrigé maintenant!

EDIT 3

Je ne pense pas que cela soit correct:

P.S: Juste pour clarifier .. J'ai remplacé get_avatar($tc->comment_author_email, $jmetc_options['avatar_size']); par add_filter('get_avatar', $avatar, $id_or_email, $size, $default, $alt);

Premièrement, vous appelez toujours get_avatar() dans votre fichier de modèle, en transmettant les mêmes paramètres que précédemment. L'appel add_filter() appartient au functions.php.

Deuxièmement, vous pouvez transmettre des paramètres supplémentaires à votre fonction de filtrage. par exemple.:

function mytheme_get_avatar( $avatar, $id_or_email, $size ) {
    $avatar = '<img src="<' . get_template_directory_uri() . '/images/authors/' . $id_or_email . '.jpg" alt="' . get_the_author() . '" width="' . $size . 'px" height="' . $size . 'px" />';
    return $avatar;
}
add_filter( 'get_avatar', 'mytheme_get_avatar', 10, 3 );
10
Chip Bennett

Il y a une petite erreur dans la fonction ci-dessus

mieux utiliser ceci:

function mytheme_get_avatar( $avatar, $id_or_email, $size ) {
    $avatar = '<img src="' . get_template_directory_uri() . '/images/authors/' . $id_or_email . '.jpg" alt="' . get_the_author() . '" width="' . $size . 'px" height="' . $size . 'px" />';
    return $avatar;
}
add_filter( 'get_avatar', 'mytheme_get_avatar', 10, 3 );
0
Juergen