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

Twitter Facebook Google Plus Linkedin email

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
Poster un Commentaire

avatar
3 Fils de commentaires
3 Réponses de fil
3 Abonnés
 
Commentaire avec le plus de réactions
Le plus populaire des commentaires
5 Auteurs du commentaire
BEFJoël ThieffrySeboss666tutoxCascador Auteurs de commentaires récents
  S’abonner  
plus récent plus ancien
Notifier de
Cascador
Invité
Cascador

Yo,

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

Tcho !

tutox
Invité
tutox
Invité

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
Invité
Joël Thieffry

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
Invité

Propre!
Merci pour ce partage