- Suite de cet article : Mon Premier Projet d’Extention WordPress PHP | Suite
- Vers la documentations et le dépôt GitLab
Depuis quelques années, je gère un site WordPress où je partage mes projets et expériences en développement. Récemment, j’ai déployé une API Node.js pour connecter Zapier à mon site, un bon exercice technique mais peu utile en pratique. En parallèle, un ami m’a demandé de résoudre un problème similaire avec WordPress, ce qui m’a conduit à bricoler une solution avec un plugin existant. Résultat : une solution fonctionnelle, mais fragile et dépendante d’un plugin gratuit. Pourquoi ne pas créer ma propre extension, sécurisée et maintenable ? N’ayant aucune expérience en développement de plugins WordPress ni en PHP, je vais partager dans cet article mon approche, les outils utilisés et les étapes clés de ce premier projet. Ready? Let’s dive in!

Conception
Besoins
Je dois effectuer une requête SQL sur une table WordPress inaccessible via l’API native, depuis l’outil nocode Zapier. L’environnement utilise les extensions wpForo et Zapier for WordPress.
Planification et recherche
J’analyse brièvement la structure des plugins installés sur WordPress et des projets GitHub similaires, sans m’y plonger trop longtemps pour éviter de perdre ma motivation. J’enregistre la documentation trouvée, mais je m’interdis d’y revenir immédiatement. Mon approche : éviter les tutoriels interminables et viser un résultat rapide pour me challenger et garder l’enthousiasme.
Premières étapes
Pour le moment je sais juste que si je colle un fichier PHP dans le dossier plugins de mon WordPress en ligne, je dois voir apparaître ma nouvelle extension dans le tableau de bord WordPress. J’utilise donc l’éditeur de fichiers de mon hébergeur pour écrire directement mon nouveau fichier PHP en direct. Je crée le dossier de mon extension et mon fichier, mais que mettre dedans ? Je n’en ai vraiment aucune idée ! Et là je fais la chose que personne n’avoue faire, j’ouvre une conversation avec chatGPT et je lui demande “comment implémenter un plugin wordpress”. je lis rapidement les explications et avec les quelques exemples de code qu’il m’a donné je bricole mon fichier PHP : métadonnées, menu, page de paramétrage et fonction pour interagir avec WordPress; le minimum pour voir si la théorie fonctionne. Je colle, j’enregistre, je rafraîchis l’affichage du tableau de bord WP. Et là je peux constater que tout s’affiche et fonctionne parfaitement, super je vais pouvoir attaquer sérieusement le développement!

Développement
Endpoint
Première étape : créer un point d’entrée que je peux tester avec Postman. Pour ça, je dois apprendre le routage en PHP/WordPress. La méthode est assez simple en théorie, mais il m’a fallu plusieurs essais (et pas mal de recherches) pour trouver la bonne syntaxe de l’URL. Au final, succès : je reçois fièrement le fameux “Hello World” en réponse !
Clé API
Le routage offre la possibilité d’ajouter un permission_callback, une sorte de garde qui contrôle l’accès au callback principal, celui où la logique s’exécute. J’en profite pour intégrer une vérification basée sur une clé API, un code secret que le client doit inclure dans la requête pour passer. Je reviens souvent peaufiner ce système d’autorisation, déterminé à garantir une sécurité optimale.
Paramètres de la requête
Pour les paramètres de la requête, j’ai opté pour des Query Params, qui offrent une meilleure expérience utilisateur dans les interfaces Zapier. J’ai passé pas mal de temps à peaufiner la validation des paramètres et les réponses d’erreur, afin que le client dispose de toutes les infos nécessaires pour corriger ses envois. Prochaine étape : isoler cette logique de validation dans une fonction middleware, pour alléger la fonction principale.
Fonction
Au début, les modifications demandées par la requête nécessitaient d’intégrer un peu de logique complexe directement dans le SQL. Pas idéal. J’ai rapidement changé d’approche en déportant toute la logique complexe dans du code PHP, bien plus pratique et lisible. Ça m’a aussi permis de créer une classe dédiée à la gestion des requêtes SQL, désormais plus simples et génériques.
Gestion du code
Mon plugin, à la base, c’était un gros fichier tout-en-un. Pas vraiment une référence en termes de bonnes pratiques. Petit à petit, j’ai structuré le tout en classes PHP, rendant le code bien plus lisible. Si je veux un plugin évolutif et maintenable, il lui faut une vraie architecture. Et ça tombe bien, c’est un aspect que j’adore. À ce stade, j’ai appris à écrire des classes en PHP et j’ai entrepris une refactorisation en profondeur. Ça n’a pas été une promenade de santé, mais le résultat est bien plus clean. Et ce n’est que le début : il reste encore plein d’optimisations à explorer. Stay tuned !
Tests
À ce jour, j’utilise mon site perso pour effectuer des tests manuels. Mais en haut de ma roadmap (et déjà en chantier), il est prévu de mettre en place un environnement de développement WordPress en local et d’y implémenter des tests automatisés.
Mise en production
Mon extension dispose d’ores et déjà d’une documentation et d’un dépôt pour la télécharger facilement et la téléverser dans WordPress.

Enseignements et Projets Futurs
Leçons apprises
Ce projet m’a permis de découvrir le langage PHP dans un environnement WordPress. J’ai constaté que la communauté est très active et qu’il est assez accessible de se lancer dans le développement d’extensions. PHP, malgré son look particulier avec sa syntaxe et ses conventions de nommage, offre tout ce qu’il faut pour développer efficacement des programmes.
Idées pour améliorer l’extension
La priorité est de doter mon programme d’une architecture robuste pour accueillir confortablement des améliorations et de nouvelles fonctionnalités. Pour cela, je vais me plonger dans la documentation, explorer des projets existants et suivre des tutoriels pour trouver les meilleurs compromis techniques. Maintenant que j’ai acquis les bases, cette phase d’optimisation sera bien plus digeste et agréable.

En conclusion, ma méthode d’apprentissage a porté ses fruits : une extension fonctionnelle avec sa doc, prête à évoluer. J’ai jonglé entre réussites et bugs, mais chaque défi m’a permis d’apprendre et de progresser.
Oui, j’ai joué la carte rapide en commençant avec l’aide d’une IA, et ça a clairement payé. Cette approche m’a permis de comprendre des notions techniques et le langage PHP presque sans m’en rendre compte et d’apprendre bien plus que je ne l’imaginais. Avant, j’aurais suivi des tutoriels interminables pour arriver à un résultat similaire, mais cette méthode a ses limites : dès qu’on s’écarte du cadre, on se perd facilement, surtout si le projet est déjà trop complexe.
Plonger directement dans la pratique, même en affrontant des bugs dès le départ, m’a permis de garder le contrôle et de rester concentré sur chaque problème à résoudre. En bref : mieux vaut se salir les mains tôt que trop tard ! Cela ne m’empêche pas d’approfondir mes connaissances ensuite avec des ressources plus avancées.

