web-dev-qa-db-fra.com

Que dois-je faire pour que les avatars soient générés différents pour les commentaires anonymes?

Tous les commentaires sur mon site sont anonymes et sans inscription. Pour poster un commentaire, vous devez renseigner les champs nom (pas obligatoirement) et le texte de votre commentaire (obligatoirement).

J'ai le problème avec les avatars. Tous sont générés de la même manière.

Que dois-je faire pour les rendre différents?

4
mvod

Il existe deux façons de personnaliser l'avatar par défaut:

  1. Ajoutez un nouvel avatar par défaut à Paramètres/Discussion .
  2. Changer la sortie de get_avatar().

Commençons par la première option; cela prend un peu plus vite.

Ajouter un nouvel avatar par défaut à Paramètres/Discussion

Il existe un filtre 'avatar_defaults'. Vous pouvez ajouter plus d'avatars ici.
Vous obtenez un tableau d’images par défaut dans lesquelles la clé est une URL et la valeur, le nom visible.

Exemple de code

add_filter( 'avatar_defaults', 'wpse_58373_kitten_avatar' );

/**
 * Add a new default avatar.
 *
 * @param  array $avatar_defaults Key = URL, Value = Visible name.
 * @return array
 */
function wpse_58373_kitten_avatar( $avatar_defaults )
{
    $avatar_defaults['http://placekitten.com/32/32'] = 'Kitty';

    return $avatar_defaults;
}

Résultat

enter image description here

Changer la sortie de get_avatar().

get_avatar() recherche d'abord une option nommée 'avatar_default'. Nous pouvons nous connecter à 'pre_option_avatar_default' et renvoyer une URL personnalisée (aléatoire).

Exemple de code

add_filter( 'pre_option_avatar_default', 'wpse_58373_custom_default_avatar');

/**
 * Return a random image URL
 */
function wpse_58373_custom_default_avatar()
{
    /* We use images from WP here, you should change this and put some default
     * images into your theme or plugin directory.
     */
    $base_url = admin_url( 'images' ) . '/';
    $images   = array ( 'wp-logo-vs.png', 'wpspin_dark.gif', 'yes.png' );
    $Rand     = Rand( 0, ( count( $images ) - 1 ) );

    return $base_url . $images[ $Rand ];
}

Résultat

enter image description here

Comme vous pouvez le constater, vous devriez renvoyer une image dont la taille correspond à celle de l’avatar de votre thème. :)

6
fuxia

Re: génération d’avatar aléatoire, c’était une réponse extrêmement utile et fonctionnait avec une modification mineure - la fonction en question nécessitait un argument à passer. Sans l'argument, le code renvoyé incluait un fouillis de code html contenant à la fois l'URL souhaitée de l'image et l'URL de l'icône par défaut de gravitar. Je l'ai changé de ça:

wpse_58373_custom_default_avatar()

pour ça:

wpse_58373_custom_default_avatar($value)

et cela a semblé générer l'URL de l'image sans le fouillis. Pour plus de facilité, le code final, avec l’ajout de get_template_directory_uri () pour cibler le thème plutôt que le dossier admin, contient des éléments suivants:

// Random Avatar

add_filter( 'pre_option_avatar_default', 'mind_bullets_default_avatar' );

function mind_bullets_default_avatar ( $value ) {

  $tix_array = array ( 'Amer_Cyborg.jpg', 'Die_hard_3.jpg', 'Thing.jpg' );

// Include randomizer in url generator
    return get_template_directory_uri().'/images/Avatars/'.$tix_array [Rand( 0, ( count( $tix_array ) - 1 ) )]; 

}

J'espère permettre aux utilisateurs de choisir le leur bientôt, mais pour ceux qui veulent juste commenter, l'apparence du site reste cohérente.

1
Stigwood