web-dev-qa-db-fra.com

Ajouter un commentaire personnalisé au hasard dans les commentaires WordPress?

J'ai un client qui a 5 images gravatar différentes, et je voudrais qu'elles soient utilisées de manière aléatoire comme vignette pour les commentaires des personnes sans gravatar. Je sais comment changer le Gravatar en un personnalisé, mais je n’affiche pas l’un des cinq de l’ensemble de manière aléatoire à chaque fois. Je sais que cela peut être fait, car Automattic le fait, mais je ne vois pas où je pourrais consulter ce code.

Est-ce que quelqu'un de plus intelligent que moi sait comment cela peut être fait?

//* Create a custom Gravatar
add_filter( 'avatar_defaults', 'sp_custom_gravatar' );
function sp_custom_gravatar ($avatar) {
    $custom_avatar = get_stylesheet_directory_uri() . '/images/gravatar.png';
    $avatar[$custom_avatar] = "Custom Gravatar";
    return $avatar;
}
2
Michael Musgrove

Regardez le Codex sur "Utiliser les Gravatars". Vous y trouverez une partie sur "Vérifier l'existence d'un gravatar" qui fonctionne comme ce:

L'astuce consiste à spécifier "404" par défaut. Dans ce cas, le service gravatar renverra une erreur 404 si aucun gravatar n’existe, au lieu de retourner une image par défaut. Une image réelle obtiendra un code 200. Il est préférable de vérifier 200, car d'autres erreurs peuvent également être renvoyées, pour d'autres cas.

Il existe également un extrait de code que vous pouvez utiliser pour cette vérification.

Puis construisez quelque chose comme ceci pour vos avatars par défaut dans single.php/comments.php ou ce que vous utilisez:

$default_avatars = array(
                      'yoururl.com/whatever/static/ava1.jpg',
                      'yoururl.com/whatever/static/ava2.jpg',
                      'yoururl.com/whatever/static/ava3.jpg',
                      'yoururl.com/whatever/static/ava4.jpg',
                      'yoururl.com/whatever/static/ava5.jpg'
                   );
$my_default_avatar_now = array_Rand($default_avatars);

echo '<img src="'.$my_default_avatar_now.'" class="avatar" />';

array_Rand() ne semble pas avoir le meilleur caractère aléatoire de ce que vous avez lu dans les commentaires sur php.net mais peut-être que ça fonctionne très bien pour vous.

Ce code n’a pas été testé. C’est donc une explication de la façon dont vous pourriez aller, puis une solution prête à l’emploi.

1
flomei