Créer une page regroupant toutes les astuces en vrac ?

closeCet article a été publié il y a 5 ans 9 mois 28 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Dans le dernier épisode des astuces diverses, on m’a demandé si j’avais une page qui regroupait toutes les astuces sorties depuis le début. Ce n’est pas le cas, ce n’était pas prévu jusqu’à ce que mon esprit décidément mal tourné se dise que c’était peut être possible de manière semi automatisée. J’ai cherché, j’ai trouvé.

La magie de wp cli

Je ne vous ai jamais réellement parlé de cet outil, pourtant pour les utilisateurs avancés de WordPress c’est un outil indispensable à garder dans sa trousse. En l’occurrence, il dispose de beaucoup de fonctions permettant de manipuler ce qui a trait aux posts, qui dans la langue de WordPress couvre à la fois les pages et les articles.

Vous l’aurez compris, l’objectif est de récupérer le contenu des articles et de les concaténer pour les coller dans une page. Et à peu de chose près, wp cli va nous permettre de faire tout ça.

Pas à pas, en douceur

Bon, en cherchant dans la documentation, je ne trouve pas moyen d’afficher les contenus d’une catégorie. Dommage. Cependant wp post list permet d’afficher tous les articles, et d’appliquer certains filtres. Les articles portent tous le même nom, alors on va bêtement utiliser grep :

Ajoutons quelques options pour ne garder que le titre et l’id, et filtrer sur le statut pour ne garder que les publications et pas le brouillon en cours :

On approche, on approche. Un des avantages de l’id, c’est que c’est une clé incrémentée en base de données. Donc plus l’article est récent, plus l’id est élevé. Pour s’assurer d’un ordre précis c’est sort qui va faire le taf :

Pourquoi faire tout ça ? Eh bien, on peut sauvegarder le contenu de chaque article dans un fichier texte. Je teste avec un des articles pour voir si mes espoirs seront comblés :

Cool, pas de sérialisation ! Je vais donc pouvoir attaquer la suite, à savoir la récupération de tous les contenus, concaténés dans un seul fichier texte. Pas de mystère, on continue dans le one-liner, et donc passage par une petite boucle (n’en déplaise à Aeris qui n’aime pas for 🙂 ):

On remarquera au passage que j’ajoute une ligne html finale « hr » pour séparer les épisodes, c’est plus pour la forme qu’autre chose, puisque je récupère tout le contenu, avec les introductions donc. Ensuite je crée la page depuis l’admin du site, ce qui me permettra de contrôler le taf. Je cherche via la cli l’id de la page :

Ce qui devrait maintenant me permettre de pouvoir mettre à jour la page :

Je vérifie ensuite dans l’éditeur, puis l’aperçu, et ma foi, ça semble bien faire le boulot :

Il ne me reste plus qu’à scripter ça proprement, ne serait-ce que pour accélérer la boucle via une variable. La prochaine fois que j’ai un article de publié je pourrais relancer cette routine et ça fera des Chocapic ! La page est disponible à cette adresse, et elle est accessible via le menu principal dans la section projets.

Est-ce qu’on peut faire mieux ?

J’en sais rien, déjà ça ça fonctionne pas mal donc je suis content, avec les filtres sur les catégories on pourrait regrouper les articles d’autres séries plus simplement que via du grep bien dégueu (et surtout avec des titres différents). Je cherche pas non plus à détecter automatiquement si un nouvel article est publié dans la série, dans une optique d’automatiser complètement la mise à jour de la page à la publication des nouveaux articles.

Mais si vous avez des idées pour tout ça je suis preneur.

6 Commentaires
Le plus ancien
Le plus récent
Commentaires en ligne
Afficher tous les commentaires
Cascador
20/09/2018 06:26

Yo,

Euh « La page est disponible à cette adresse », il y a un lien pour voir le rendu ?

Tcho !

tutox
20/09/2018 06:57
Répondre à  Cascador
tutox
20/09/2018 07:02
Répondre à  tutox

Merci pour l’article, très interessant.
Juste une petite remarque:
– peut être prévoir 1 nombre d’astuces limité par page car a la longue ça risque de piquer un peu pour la charger avc une connexion un peu faible

Joël Thieffry
Joël Thieffry
20/09/2018 12:16

Yop,
Je te conseille d’ajouter l’option -n à ta commande sort, sinon quand l’ID du post franchira les 10000 ça ne sera plus classé chronologiquement.
A++

BEF
BEF
21/09/2018 08:18

Propre!
Merci pour ce partage