wppb.me

Je sais pas vous mais, en ce qui concerne ma petite personne, quand je pars à la découverte d’un nouvel univers, j’ai désormais pour habitude de m’appuyer sans vergogne sur le travail qu’ont d’ores et déjà mené ceux qui se sont joyeusement pris la tête à l’explorer en profondeur. Et dans le domaine des extensions WordPress, les sources sont nombreuses qui nous permettent d’éviter certains écueils sur lequel le débutant que je suis n’aurait sans doute pas manquer de s’échouer lamentablement. Ainsi, pour la structure du plugin, il existe un boilerplate qui va s’avérer à l’usage fort bien construit et qui pousse même le bon gout jusqu’à proposer un générateur.

On remplit sagement le formulaire qui n’attend que ça, on clique sur BUILD et on télécharge son petit cadeau.

Comme je ne doute pas que vous êtes de fieffés curieux, j’imagine qu’aussitôt la chose rapatriée sur votre disque dur favori, vous allez sans plus attendre vous précipiter pour la dézipper et donc découvrir ça :

  • text-floating-image
    • admin
      • css
        • text-floating-image-admin.css
      • js
        • text-floating-image-admin.js
      • partials
        • text-floating-image-admin-display.php
      • class-text-floating-image-admin.php
      • index.php
    • includes
      • class-text-floating-image-activator.php
      • class-text-floating-image-deactivator.php
      • class-text-floating-image-i18n.php
      • class-text-floating-image-loader.php
      • class-text-floating-image.php
      • index.php
    • languages
      • text-floating-image.pot
    • public
      • css
        • text-floating-image-public.css
      • js
        • text-floating-image-public.js
      • partials
        • text-floating-image-display.php
      • class-text-floating-image-public.php
      • index.php
    • index.php
    • LICENSE.txt
    • README.txt
    • text-floating-image.php
    • uninstall.php

Comme vous pouvez le constater, la chose est très sagement pensée : chacun des fichiers est précautionneusement repassé-plié-rangé nickel dans le tiroir du placard qui va bien, qu’on se croirait presque dans la chambre d’un psycho-rigide façon informaticien…

En même temps, je vous le concède, l’ensemble peut effrayer les néophytes et autres âmes sensibles. À bien y regarder, il n’y a pourtant pas franchement de quoi. Nonobstant, pour ceux qui ouvriraient de grands yeux genre c’est quoi ce truc, je vais m’employer à décortiquer superficiellement l’ossature du machin.

Or donc, à la racine du dossier, nous trouvons :

  • Un index.php vide (dont l’utilité est débattue par ailleurs mais on ne va pas s’attarder plus que ça sur cette controverse vu qu’on a beaucoup à faire).
  • Les fichiers LICENSE.txt et README.txt que je ne vous ferai pas l’offense de commenter plus que ça.
  • Le fichier text-floating-image.php qui constitue la porte d’entrée de notre plugin.
  • Un fichier uninstall.php dédié à la désinstallation de l’extension et au nettoyage afférent.

Nous avons par ailleurs :

  • Un dossier admin qui contient tout ce qui permet de faire fonctionner notre plugin côté obscur back-end de la force (paramétrage des options par défaut, interface dans l’éditeur, etc).
  • Un dossier includes qui renferme les classes généralistes.
  • Un dossier languages destiné à stocker les traductions.
  • Un dossier public qui fait pendant au dossier admin et qui inclut tout le nécessaire au bon fonctionnement de notre extension côté front-end.

Nous entrons donc dans notre plugin par le fichier text-floating-image.php logé à la racine du dossier. Il fait office de démarreur du moteur et nous n’aurons rien à y faire si ce n’est une cosmétique modification pour préciser la description de notre extension. En bref :

  • Il signale au cœur battant de WordPress les fonctions à exécuter lors de l’activation et de la désactivation du plugin (lignes 37 à 52). Dans chacun des cas, le code correspondant est isolé dans une classe (class-text-floating-image-activator.php et class-text-floating-image-deactivator.php) rangée dans le dossier includes.
  • Il demande l’inclusion de la classe principale class-text-floating-image.php, elle aussi rangée dans le dossier includes (ligne 58).
  • Il crée une instance de cette classe et appelle aussi sec la fonction run() de cette dernière (lignes 69 à 75).

On continue donc avec la classe class-text-floating-image.php qui constitue le cœur de notre plugin :

  • Elle se charge d’inclure les classes utilitaires class-text-floating-image-loader.php et class-text-floating-image-i18n.php du dossier includes et de préparer la mécanique chargée de l’internationalisation.
  • Elle inclut par ailleurs la classe class-text-floating-image-admin.php du dossier admin et la classe class-text-floating-image-public.php du dossier public.
  • Elle contient également deux fonctions primordiales dont la mission est de définir les hooks propres aux parties administratives et publiques de l’extension et d’en transférer la gestion à la classe class-text-floating-image-loader.php qui s’occupe toute seule comme une grande d’une cuisine dans laquelle nous n’avons pas à nous salir les mains.

Nos interventions dans ce fichier se limiteront à compléter ces deux fonctions define_admin_hooks() et define_public_hooks() au fur et à mesure de nos besoins et l’essentiel de notre travail s’opérera au sein des dossiers admin et public.

Les présentations étant maintenant faites, il est grand temps de passer à l’action. Ce que je vous propose de faire sans plus tarder en sautant sur le chapitre suivant.