Afficher un auteur de manière aléatoire en sidebar
Un bon moyen de mettre en avant les auteurs sur un site multi-auteur est d'en afficher un, de manière aléatoire, en sidebar par exemple. Ainsi, à chaque changement de page, un auteur différent est mis en avant en toute équité... vive l'aléatoire !
J'ajoute ici la gestion d'image miniature pour les auteurs avec le plugin User-Photo et propose un lien vers la fiche de l'auteur du blog (template > author.php) et non vers l'url du site renseignée dans son profil.
Voici le code complet à insérer dans le fichier sidebar.php de votre thème, que je détaille ci-dessous :
<h3>Découvrez un auteur</h3> <?php $users = get_users('exclude=1'); shuffle($users); $i=0; foreach( $users as $user ) { if($i == 1) break; ?> <a href ="<?php bloginfo('url'); ?>/author/<?php echo $user->user_nicename; ?>"> <?php userphoto($user); ?> </a> <a href ="<?php bloginfo('url'); ?>/author/<?php echo $user->user_nicename; ?>"> <?php echo $user->display_name; ?> </a> <?php $i++; } ?>
Le code en détail
1. Alors tout d'abord, on récupère les utilisateurs que l'on souhaite faire participer à la loterie dans une variable, en précisant ceux qui ont le rôle d'auteur par exemple :
$users = get_users('role=author');
ou en excluant manuellement les identifiants de ceux que l'on ne souhaite pas afficher, l'administrateur principal par exemple :
$users = get_users('exclude=1');
2. Comme la fonction get_users n’accepte pas le order_by = rand(), il est nécessaire de les mélanger soi-même :
shuffle($users);
3. Puis on initialise un compteur et on lance la boucle foreach pour parcourir notre variable $user. A noter que pour en afficher plus d'un, il suffit de modifier la valeur de $i==1 :
$i=0; foreach( $users as $user ) { if($i == 1) break; // ici le détail de l'auteur $i++; }
4. Pour l'affichage de la miniature, j'utilise ici le plugin User-Photo, avec un lien vers la fiche de l'auteur (author.php).
<a href ="<?php bloginfo('url'); ?>/author/<?php echo $user->user_nicename; ?>"> <?php userphoto($user); ?> </a>
5. Enfin, il ne reste plus qu'à afficher son nom public, avec un lien vers sa fiche également :
<a href ="<?php bloginfo('url'); ?>/author/<?php echo $user->user_nicename; ?>"> <?php echo $user->display_name; ?> </a>
Et voilà, de quoi ravir vos auteurs !