web-dev-qa-db-fra.com

Comment ajouter un attribut HTML personnalisé à get_avatar?

J'essaie d'ajouter l'attribut HTML nopin = "nopin" de Pinterest aux balises d'image commentaire d'avatar sur mon blog. Voici la fonction que j'utilise pour appeler l'avatar sur chaque commentaire:

get_avatar($comment, 50, vol_random_image())

vol_random_image () sélectionne simplement une image dans un tableau si le commentateur n'a pas de Gravatar.

Je sais que get_avatar a un attribut $ alt, mais cela ne définit qu'une balise alt, non? Comment pourrais-je ajouter cette balise HTML personnalisée?

Code complet de la fonction:

echo "<li ", comment_class(), " id=\"li-comment-", comment_ID(), "\">\n
\t<article id=\"comment-", comment_ID(), "\" class=\"comment\">\n
\t\t<footer>\n
{$tab3}<div class=\"comment-author vcard\">\n
{$tab3}\t<div class=\"comment-avatar\">\n",
get_avatar($comment, 50, vol_random_image()),
"{$tab3}\t</div>\n
{$tab3}</div>\n" .
(($comment->comment_approved == '0') ? 
    sprintf("{$tab3}<em>") . __('Your comment is awaiting moderation.', 'volatyl') . sprintf("</em><br />\n") : 
'') .
"{$tab3}<div class=\"comment-meta commentmetadata\">\n{$tab3}\t" .
sprintf('<cite class="fn">%s</cite>', get_comment_author_link()) .
"\n{$tab3}\t<div class=\"comment-date\">\n
{$tab3}\t\t<a href=\"", esc_url(get_comment_link($comment->comment_ID)), "\"><time pubdate datetime=\"", comment_time('c'), "\">";
3
Thomas Frank

Vous pouvez utiliser le filtre get_avatar pour modifier la sortie de la balise image et ajouter votre attribut HTML.

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

$avatar : Image tag for the user's avatar.
0
Brad Dalton

Réponse

get_avatar($comment, 50, vol_random_image(), '', array('extra_attr' => 'nopin="nopin"'));


Explication

Regardez la fonction get_avatar:

echo get_avatar( $id_or_email, $size, $default, $alt, $args );

En regardant cette fonction, vous remarquerez que le dernier paramètre autorisé est $args, ce qui vous permet essentiellement de modifier toutes les valeurs autres que $id_or_email, $size, $default et $alt.


Ci-dessous, les arguments supplémentaires disponibles listés sur la page de codex :

  • size
  • height
  • width
  • default
  • force_default
  • rating
  • scheme
  • class
  • force_display
  • extra_attr

    Et le paramètre extra_attr est documenté comme suit:

extra_attr
( String ) (facultatif) Attributs HTML à insérer dans l'élément IMG. N'est pas désinfecté.
Défaut: vide.


Comment implémenter:

Malheureusement, autant que je sache, il n’existe sur le Web aucun didacticiel implémentant l’utilisation de extra_attr ni aucun des autres arguments supplémentaires répertoriés ci-dessus. De plus, il y avait une seule question WPSE sur laquelle j'ai même trouvé des mentions ou des questions. Si vous êtes un peu comme moi, la plupart des documents (comme ce que j'ai posté ci-dessus) ne vous serviront à rien s'ils ne sont pas accompagnés d'un exemple ...

Voici un exemple d'utilisation de ce modèle dans votre modèle de liste de commentaires:

  <?php 
        $atts = array( 
                       'extra_attr' => 'nopin="nopin"',
                       'class' => 'media-object img-rounded'                  
        );
        if ( 0 != $args['avatar_size'] ) echo get_avatar( $comment, $args['avatar_size'], '', '', $atts );
   ?>

Ce qui précède générerait la balise img de l'avatar de commentateur en ajoutant les attributs suivants:

nopin="nopin"
class="media-object img-circle"

Cet exemple vous donne les attributs souhaités pour désactiver l'épinglage des images d'avatar sur Pinterest. En outre, il montre comment ajouter des classes supplémentaires lorsque vous souhaitez styliser certaines images (dans ce cas, les images de commentaire).


Alternativement, vous pouvez utiliser le filtre get_avatar pour filtrer le code HTML au complet, si vous le souhaitez. C'est souvent l'approche souhaitée par les auteurs de plugins.

Voyant que tout cela n’était pas très bien documenté et qu’il semblerait que beaucoup de gens voudraient le savoir, j’ai décidé de créer un plugin qui vous permette de l’implémenter dans un shortcode pour vos publications, widgets, menus, etc. être téléchargé ici sur Github .

1
Bryan Willis

En fait, il n’existe aucune option de filtrage pour le balisage HTML d’Avatar. Mais je pense que vous pouvez le faire de façon étrange. Je n'ai pas testé le code mais vous pouvez l'essayer une fois:

get_avatar($comment, 50, vol_random_image() , "' nopin='nopin"); 
0
Chinmoy Kumar Paul