Afficher un auteur de manière aléatoire en sidebar

Wordpress auteur aléatoirUn 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 !

Poursuivre votre lecture

Laisser un commentaire

Si vous insérez du code, merci d'utiliser les balises [php] en début et [/php] en fin, ou [html] et [/html]...