WordPress : un plugin pour lister les posts avec des liens sortants

Quand on fait de l’édition de sites et plus particulièrement de la vente de liens positionnés, l’identification des articles des sites support ayant des liens sortants est une nécessité. Le hic, c’est que lorsqu’on utilise (par exemple) certaines techniques d’obfuscation, l’usage d’un crawler devient (presque) nécessaire pour lister efficacement les posts de nos sites sous WordPress sur lesquels on peut encore éventuellement proposer un lien sortant à un futur client.

Las de devoir crawler régulièrement mes sites et de tenir de laborieuses listes, j’ai décidé de mettre à contribution ChatGPT pour m’aider à réaliser un plugin permettant de remplir cette fonction. Explications !

Le cahier des charges : identifier les liens (vraiment) sortants

Il suffisait de s’interroger sur les besoins essentiels d’un éditeur de sites pour établir les spécifications techniques de notre futur plugin. J’ai donc entrepris de lister simplement ce que je voulais obtenir :

  • Pouvoir identifier (dans la liste des posts du back-office WordPress) les articles ayant ou non des liens sortants
  • Ne pas identifier les liens obfusqués afin d’éviter les faux positifs (nécessité de devoir indiquer une classe CSS particulière pour filtrer les liens obfusqués en front)
  • Pouvoir simplement paramétrer le plugin via le back-office afin de définir l’éventuelle classe CSS à filtrer
  • Pouvoir exporter la liste des articles ayant des liens sortants

Partant de là, il m’aura fallu environ 5 minutes pour établir un prompt détaillé à ChatGPT (en mode GPT-4) et le laisser me faire une proposition de code : impressionnant !!!

L’interaction avec ChatGPT

Quand on utilise ce type d’outil génératif, la précision est de mise. Je vous partage donc mon prompt initial histoire d’éviter de faire de longs discours sur la façon d’appréhender ce genre de demande :

Développe moi un plugin WordPress complet permettant, pour l'ensemble des posts d'un site développé avec WordPress, d'indiquer dans une colonne complémentaire appelée "Liens externes", le nombre de liens sortants (hors du site) du post en question.  Le nombre de liens sortants doit être stocké dans un custom field rattaché aux posts. Il doit être remis à jour à chaque update de post, et précalculé lors de l'initialisation du plugin lors de sa première mise en place.  Le champs doit permettre de trier les posts selon le nombre de liens sortants.  Il faut également développer une page de réglages pour ce plugin, présente dans le menu "Réglages" de WordPress et appelé "Liens externes".  Dans cette page, on doit avoir deux onglets. Le premier onglet "Paramètres" doit permettre de spécifier une exception dans le décompte des liens ayant une classe CSS particulière, via un champs appelé "Exception (classe CSS de liens"). Tous les liens de cette classe CSS ne devront pas être comptabilisés comme liens sortants, même s'ils pointent vers d'autres sites. Par exemple, si on indique "obflnk" comme classe dans le champs d'exception, tous les liens ayant une classe CSS "obflnk" ne seront pas comptabilisés dans les liens sortants.  Un second onglet "Export" permet d'afficher un tableau HTML listant l'ensemble des pages comportant au moins un lien sortant qui n'ait pas la classe CSS faisant exception. Dans ce tableau, indique le post_id, le titre du post, l'URL du post et le nombre de liens sortants. Un bouton "Exporter la liste" doit permettre d'exporter la liste au format CSV. Langage du code : AsciiDoc (asciidoc)

En revenant sur ce prompt de taille, ma citation préférée me revient à l’esprit : « En poursuivant l’inaccessible, la simplicité se trouve en travers du chemin » (Alan Perlis)

En d’autres termes, un énoncé clair permet d’obtenir un résultat clair (vous remarquerez que la précision nécessaire de cette demande implique de connaître un minimum les mécanismes avancés de WordPress, puisque je lui parle de custom field, de CSS et d’autres concepts qu’un néophyte ne peut connaître)

La seule « limite » de ChatGPT est qu’il est limité en longueur dans ses réponses, et qu’il faut souvent lui demander de reprendre là où il en était. Comme il a bon goût de numéroter les étapes à suivre, il suffit donc de lui demander par exemple « reprends au point 6 » et il reprends là où il en était !

Sur cette demande précise, il m’a à un moment simplement dit qu’il fallait coder le contenu des onglets que je lui avais demandé en m’indiquant la documentation à suivre. En bon fainéant développeur efficient que je suis, je lui ai donc demander de les coder également !

Quand on demande poliment, on obtient tout ce que l'on veut !

Il m’aura suffit d’assembler les morceaux, de personnaliser deux ou trois petites choses pour obtenir, en moins de 15mn au total, un plugin pleinement fonctionnel !

Le plugin en détail

Le plugin en question se présente en deux aspects :

  • l’ajout d’une colonne dans la liste des articles dans le back-office (triable et permettant d’identifier clairement les posts ayant déjà des liens sortants)
  • l’ajout d’une page de paramétrage avec deux onglets dédiés

Côté liste d’articles, le résultat est très simple mais fonctionnel :

Plugin affichant les liens externes par articles

À noter que la colonne peut faire l’objet d’un tri, ce qui me semblait essentiel à l’usage :

L'indicateur de liens externes est triable

Côté paramètres, c’est dans les « Réglages » de WordPress qu’il faut aller chercher l’onglet très intelligemment nommé « Liens externes » :

L'onglet Liens externes pour accéder aux paramètres du plugin

Là, on retrouve nos deux onglets. Le premier ne comporte qu’un champs texte avec un bouton de validation, permettant d’indiquer une éventuelle classe CSS des liens à ignorer dans le décompte. Si comme moi vous utilisez l’excellent Link Juice Optimizer, il vous suffira d’y indiquer la classe par défaut des liens obfusqués pour qu’ils ne soient (logiquement) pas comptabilisés.

Le champs permettant d'indiquer la classe de liens à ne pas comptabiliser

Le second onglet, nommé « Export », permet comme son nom l’indique d’exporter au format CSV la liste telle que présentée à l’écran :

L'onglet d'exportation de la liste des articles avec des liens sortants

Attention : si votre blog comporte un très grand nombre d’articles, ça risque de gravement ralentir l’affichage !!!

Télécharger le plugin

Bien entendu, je vous offre le code du plugin, disponible sur Github ici ; pour les plus fainéants d’entre vous, voici également le lien de téléchargement direct :

Disclaimer : ce plugin est donné à titre expérimental et ne saurait garantir la sécurité de votre site. À ne pas utiliser sur vos sites en production (ou à n’installer et utiliser que très ponctuellement !)

Voir tous les articles de la catégorie WordPress

Laisser un commentaire

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

Retour en haut