Page auteurs paginée dans WordPresss

Cet exemple décrit une manière de montrer les auteurs d’un site wordPress, en allant chercher les informations à l’aide de l’objet WP_User_Query qui permet de faire des requêtes sur les tables wp_users et wp_users_meta. Dans le cas de sites avec de nombreux auteurs, il peut être préférable de paginer les résultats pour éviter d’avoir une page trop longue. La navigation entre les différentes pages peut se faire alors en AJAX pour fluidifier l’expérience utilisateur.

Exemple de page auteurs paginée sur Murviel Info

Création du page-template

On crée un page-template pour accueillir cette page en php. On ne la nomme pas author.php, ce nom étant réservé dans WordPress pour accueillir la page d’archive d’un author en particulier. Je la nomme page-template-authors.php à la racine du thème. On peut aussi faire un dossier dans le thème (parent ou enfant) pour accueillir les différentes pages templates. Pour indiquer à WordPress qu’il est en présence d’un modèle de page, on démarre l’entête de la page avec les commentaires suivants :

Ceci permettra d’avoir un modèle de page dans l’éditeur d’articles de WordPress.

Un select pour choisir le modèle de page dans l'éditeur de WordPress

Ecriture du template

Pour remplir ce fichier, on utilise le modèle de page par défaut, en allant chercher le header get_header(), en inscrivant la structure du contenu principal, en invoquant get_sidebar() pour la barre latérale, et get_footer() pour le bas de page et les scripts. On imprime le résultat d’une fonction, que l’on écrira dans functions.php, on aurait pu l’écrire directement dans le template.

Cet exemple est fait avec le thème Extra, l’identifiant et les classes des divs peuvent changer en fonction de votre thème.

La requête WP User Query

La fonction clio_get_authors() va faire la requête en base de données sur les table wp_users et wp_usermeta. La requête prend cette forme avec différents arguments pour affiner les résultats :

Pour obtenir la liste des arguments nécessaires ou supplémentaires, on peut se référer à la documentation de la classe WP_User_Query. Les arguments nécessaires à la pagination sont number (nombre d’auteurs par page), offset (le rang de l’auteur par lequel commence les résultat de la sous-page de pagination) et paged pour indiquer le numéro de la page sur laquelle on se trouve. Le paramètre count_total est défini à true, pour permettre d’accéder au nombre total d’auteurs de la requête avec la méthode get_total(), il nous servira pour la pagination.

Une fois que la requête est faite pour la page, on affiche les résultats avec une fonction que l’on définira pour montrer un auteur unique prenant en argument l’auteur à afficher, et la barre de navigation affichée à l’aide de la fonction paginate_links().

Un exemple de fonction pour afficher un auteur pourrait être :

Cette fonction retourne une div avec le nom de l’auteur, sa description et le nombre d’articles écrits. Un exemple plus long, piqué dans le thème Extra et recopié dans le thème enfant pourrait être :

Voilà, il ne reste plus qu’à créer une page vide dans l’éditeur, en sélectionnant le modèle de page Authors, et lui donner un titre qui lui donnera un slug, par exemple Auteurs. La page sera accessible à l’adresse https://mondomain/auteurs, en fonction du réglage des permalinks, les urls des pages suivantes seront de la forme https://mondomain/auteurs/page/n, n étant le numéro de la page.

Pour la navigation en AJAX, on écrit un javascript qui va permettre cela. Avec jQuery et la méthode $.get(), on appelle le contenu de la page qui nous intéresse. On suppose disposer d’un loader gif (image pour faire patienter l’utilisateur), que les liens sur la pagination ont la classe page-numbers. On entre dans l’historique de navigation la page appelée pour indiquer celle-ci dans la barre d’adresse du navigateur. Si l’utilisateur appuie sur le bouton de page précédente, l’évènement popstate est déclenché, et on l’envoie sur la page en question.

La fonction smoothScroll() pour remonter doucement et automatiquement sur la page pourrait s’écrire de la façon suivante :

Et hop, une jolie pagination et une navigation en AJAX sur une page Auteurs dans WorPress en utilisant un template.

Soumettre un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables.