Créer une page « Contributeurs » sous WordPress pour valoriser vos auteurs

WordPress Channel est un projet multi-auteurs comme le souligne la page qui valorise les nombreux contributeurs. Pour créer une telle page, nous aurons recours à un modèle de page et quelques fonctions PHP.

Étape n°1 – Création du modèle de page pour les contributeurs

À l’aide de votre éditeur de code favori, créez un nouveau fichier PHP dans le dossier de votre thème WordPress que vous nommerez template-contributors.php par exemple.

La déclaration d’un modèle de page passe par l’ajout d’une ligne de code.

/* Template Name: Contributeurs */

Étape n°2 – Récupération de la structure du thème

Chaque thème dispose de sa propre structure plus ou moins complexe. De base, on appelle header.php et footer.php mais cela ne suffit généralement pas. Il nous faut reprendre les sections et autres balises <div> présente dans le fichier page.php. Il est fort probable que votre thème intègre nativement un modèle taille large ou fullwidth – autrement dit, sans colonne latérale.

Reprenez donc cette structure en faisant un copier / coller puis supprimer tout ce qui trouve dans la boucle et elle avec, comme ceci :

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

CODE A SUPPRIMER Y COMPRIS L'OUVERTURE ET FERMETURE DE LA BOUCLE

<?php endwhile; else: ?>
      <p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

Étape n°3 – Lister les contributeurs

Maintenant que nous disposons de la structure de page, il nous faut lister les utilisateurs qui rédigent du contenu chez vous. C’est sans doute la partie la plus intéressante : les comptes utilisateurs de WordPress disposent de champs (site Web, Facebook, Twitter, etc.) que vous pourrez afficher ou non selon les situations.

Pour commencer, nous allons faire une requête du type WP_User_Query avec l’argument include. Ce dernier nous permet de choisir les utilisateurs que nous souhaitons lister par leur ID – pour obtenir l’ID d’un élément sous WordPress, survolez ce dernier puis notez le numéro affiché dans la barre de détails de votre navigateur.

Et là je sens qu’une question vous taraude l’esprit : pourquoi ne pas utiliser l’argument role ?

La réponse est simple : si comme moi vous avez des utilisateurs avec le rôle auteur et d’autres avec le rôle administrateur vous ne serez pas en mesure de tous les afficher. Et oui, cet argument est une chaîne et non un tableau… dommage ! Des techniques alternatives existeraient mais elles relèvent bien souvent de la bidouille à mon sens.

Voici donc le bout de code qu’il vous faudra adapter à votre sauce :

<?php
	$args = array (
		'include'	=> array( 3, 10, 8, 19, 18, 12, 21, 5 ),
	);

	$user_query = new WP_User_Query( $args );

	if ( ! empty( $user_query->results ) ) {
		foreach ( $user_query->results as $user ) { 
?>

	<article <?php post_class('post'); ?>>

		<?php echo get_avatar($user->ID); ?>

		<div class="entry">
			<h2><a title="<?php echo $user->display_name ?>" href="<?php echo get_author_posts_url($user->ID); ?>"><?php echo $user->display_name ?></a></h2>
			<p><?php echo $user->description ?></p>
		</div>
		<div class="entry-meta-footer">
			<span class="pull-left">
				<span class="author-post"><a rel="nofollow" title="<?php echo $user->display_name ?>" href="<?php echo get_author_posts_url($user->ID); ?>"><?php _e('See all posts', 'wpc'); ?></a></span>
			</span>
			<span class="pull-right">
				<a rel="nofollow" title="<?php _e('Website author', 'wpc'); ?>" href="<?php echo $user->user_url ?>"><span class="dashicons dashicons-admin-links"></span></a>
				<a rel="nofollow" title="<?php _e('Twitter author', 'wpc'); ?>" href="http://twitter.com/<?php echo $user->twitter ?>"><span class="dashicons dashicons-twitter"></span></a>
			</span>
		</div>

	</article>

	<?php }
	}
?>	

Pour ma part, j’affiche les éléments suivants :

  • Le nom et le prénom, c’est le minimum que l’on puisse faire ;
  • La description de l’auteur ;
  • Son gravatar mais vous pourriez également utiliser un champ personnalisé ;
  • Un lien vers sa page d’archive ;
  • Des liens de réseaux sociaux ;

Résultat final

Je vous propose de télécharger le code que j’utilise pour ma propre page de contributeurs sur ce site. Cependant, il est important de noter qu’il repose sur les technologies HTML5, Twitter Bootstrap et Masonry.

Modèle de page 'Contributeurs'

Un fichier PHP à placer dans votre thème et à adapter.

Taille : 1,5 KiB  •  Date : 9 mars 2014 •  Hits : 742

Les Contributeurs de WordPress Channel

Valoriser les auteurs de votre site est un élément essentiel à mon sens. Cela démontre le caractère collaboratif du Web alors faites de même !

28 commentaires

  1. Romuald

    Bonjour Aurélien, ton article tombe à pic pour moi. Je souhaite justement affiche la liste des contributeurs de mon site. Petite particularité : je souhaite pouvoir l’afficher sous forme de classement par nombre de posts et également classé par mois. Ça fait plusieurs jours que je cherche une solution. As-tu une idée de la faisabilité ?
    merci

    1. Aurélien Denis auteur de l’article

      Bonjour Romuald,

      tu souhaites combiner 2 paramètres : nombre de posts et date ? J’ai du mal à visualiser le résultat… pour le premier, tu peux utiliser post_count comme argument de orberby comme décrit sur le codex.

      1. EntreTouristes.org

        Je voudrais la même chose que Romuald à vrai dire, pour ma part c’est pour réaliser un classement des rédacteurs sur le mois de Février par exemple mais je ne sais pas comment utiliser ses arguments, si tu as une idée stp !

      1. jeretiens

        Salut !
        J’ai le même problème que Geoffray, j’upload ton fichier et j’ai la même erreur.
        Quand je modifie le test if, je n’ai plus le message d’erreur mais plus rien ne s’affiche.
        De même si je le retire la portion de code contenant le message.

        As-tu une idée de comment régler ce problème ?

        Merci !

        1. Aurélien Denis auteur de l’article

          Quelle est l’erreur précisément ? Je ne pense pas que vous ayez le même problème. Dans le cas précédent, il s’agissait de l’impossibilité de télécharger le fichier PHP disponible en fin de tutoriel.

          1. jeretiens

            Salut !
            Alors j’upload le fichier sur mon serveur et lorsque je me rends sur son url: j’ai « Vous ne disposez pas des accès ! Attention ! », l’erreur du security check en haut du code.
            Si je modifie / supprime ce check, j’ai juste une page blanche …

  2. Francine

    Bonjour,
    Et si on voulait plutôt créer un « article » par membre, pour pouvoir écrire des commentaires sur sa page, cela serait-il beaucoup plus compliqué ?

    Francine

  3. Lumière de Lune

    Bonjour

    pourquoi fait un tableau avec des id codées en dur ? Si tu as des auteurs que tu ne veux pas lister, tu peux certainement le gérer via les statuts, ou, au pire, via un usermeta, ou le nombre d’articles (ce que j’ai fait sur un de mes sites)

    @Francine, l’intérêt de cette méthode, c’est qu’elle utilise la fonction native de wordpress, the_author_linkk() pour afficher la page de l’auteur (enrichie) ou la page de tous les auteurs. Alors que créer un article « auteur » empêche de faire le lien automatiquement entre cet article et la « meta » publié par… de plus ces « articles » vont se retrouver dans la boucle, il faut les identifier par une catégories, qui devrait logiquement être exclue de l’affichage des catégories normales…

    Il faut toujours faire au plus proche de la structure de WordPress !

    1. Aurélien Denis auteur de l’article

      Salut,

      je suis d’accord avec toi sauf que le vrai problème c’est qu’il sera bien pratique de devoir filtrer par rôles car ajouter une case à cocher dans chaque profil pour indiquer qu’ils ont un rôle ça fait moyen je trouve.

  4. Tortense

    Arggh merci pour ce template qui est exactement ce que je cherchais pour m’éviter d’installer un énième plugin du genre team manager. Par contre, je suis nulle en php et je ne comprends pas pourquoi mes auteurs (users) s’affichent par ordre alphabétique. J’ai beau regarder le code, je ne vois pas comme ça se fait.
    Pour l’exemple, j’ai mis :
    ‘include’ => array( 7, 6, 23, 53, 64, 47, 45, 35, 11, 28, 57, 8, 4 )
    Et ce n’est pas du tout dans cet ordre précis que les infos des auteurs s’affichent.
    Une idée pour la noob que je suis ?

  5. Mat

    Hello,

    Question de Noob, il faut déclarer le template quelque part? J’ai uploader le fichier à la racine de mon thème, mais je ne le vois pas apparaître dans mon back-office parmi les templates disponibles..

  6. ionaslotscham

    Bonjour,

    Merci tout d’abord de ce tutoriel qui correspond à ce que je veux faire à l’intérieur de la page d’accueil, sous le dernier article paru. J’ai donc intégré votre code html dans ma page. Ca marche, mais les informations des contributeurs se rangent les unes sous les autres. J’ai essayé d’étudier votre feuille CSS, mais sans succès. Les identités CSS que j’utilise ne semblent pas être reconnues.

    Y a-t-il un élément dont il faudrait tenir compte pour mettre en forme votre code ?

    en vous remerciant par avance
    cordialement
    IL

  7. Karim

    Bonjour,

    Tout d’abord merci pour ce template qui ma permis de bien valoriser mes contributeurs.
    Cela dit j’ai un petit soucis, car ce que je veux c’est afficher l’ensemble des contributeurs automatiquement sans intervenir sur le fichier source.

    Auriez vous une solution pour ce problème?

    Cordialement.

  8. Karim chebil

    Bonjour,

    Tout d’abord merci pour ce tuto qui est tout simplement super,
    mais j’ai une question qui est pour moi assez importante, Comment faire pour intégré automatiquement les contributeurs ?
    Sans aller a chaque fois sur la page model et inséré les Id des contributeurs

  9. Hina

    Bonjour ! Tout d’abord, un grand merci pour ce tuto qui m’a beaucoup aidé !
    Par contre, je rencontre un problème… J’ai ajouté des lignes pour d’autres réseaux sociaux, et les icônes s’affichent, que le champ soit renseigné ou non dans le profil de l’utilisateur. Or, si mon utilisateur n’a pas de compte twitter, par exemple, je ne veux pas que l’icone s’affiche… Auriez vous une solution ?

  10. Greg

    Bonjour tout le monde. Tout fonctionne très bien, mis à part que lorsque j’ajoute un auteur, parfois celui-ci s’affiche sur la page Auteurs que j’aie créée parfois non. Pourquoi ? Merci par avance de votre réponse.

  11. Adrien

    Salut Aurélien. Très bonne template, cependant, n’étant pas du tout dans le programmation et après avoir uploader mon fichier.php, que faut-il faire ensuite ? Pour que mes auteurs s’affichent dans la page qui leurs sont dédiés ? En attente d’une réponse, merci d’avance.

  12. Antoinevebe

    Bonjour,

    J’utilise le thème Smart Magazine et j’ai utilisé votre modèle de page afin d’obtenir le même résultat que vous sur mon blog. Pourtant, ien à faire! Ca ne s’affiche pas correctement. Pourriez-vous m’aider?

    Merci.

Laisser un commentaire