J’ai été confronté à un petit exercice au boulot cette semaine. Il me fallait réaliser un filtre sur des articles émanant d’un site WordPress et ce par leur date de publication. Il fallait le faire via un dropdown, qui reprenait les années des articles sans qu’il n’y ait des doublons. Voilà comment j’ai procédé pour créer un filtre Ajax sur les articles WordPress
J’en ai déjà parlé ici et ici. Mais sachez que WordPress a une API intégrée et permet donc la lecture (entre autre) de ces articles via cette dernière. Ici, c’était très utile pour réaliser un filtre ajax (sans rafraîchissement de la page) pour afficher les posts compris entre 2 dates. Ici, il s’agissait de le faire par année. Mais comment rendre le filtre lui aussi dynamique ? C’est-à-dire, comment obtenir un dropdown des différentes années et cela sans qu’elles se répètent. Pour l’exemple ci-dessous, je n’appelle pas l’API, mais les données sont présentes sous forme d’objet. C’est à la ligne 173 que tout commence. Pour y arriver, je retiendrai 3 fonctions fort utiles.
Le tout donne comme résultat un tableau qui est ensuite possible de manipuler à sa guise.
Avec une boucle, je peux dès lors afficher les différentes dates dans des éléments HTML comme la balise « option« , pour ainsi créer un dropdown. Et le tour est joué !
Vous verrez que quand vous changerez les valeurs de la propriété « date », le dropdown changera lui aussi.
J’ai été très surpris de voir à quel point WordPress ne proposais pas un plugin gratuit qui permettrait de réaliser des fiiltres Ajax. Bien sûr, il en existe. Y compris via des addOns. Mais aucun d’entre eux ne m’a totalement convaincus pour réaliser ce que je voulais. En tous les cas chez les gratuits et ce qui ne concerne pas Woocommerce. (Dans ce cas-là, vous en trouverez une tonne…) Cela m’a donné l’idée de réaliser un petit plugin qui pourrait à la fois afficher les articles WordPress sans rechargement de page et ce via une série de filtres; eux aussi dynamiques. Je le déposerai sur Github pour permettre son évolution.
D’ici là, merci de m’avoir lu et restez curieux 😉