Je viens d'installer un Wordpress pour pouvoir développer un plugin pour cette plateforme que je ne connaissais jusqu'ici que de nom. Waw. Ça fait peur ce bouzin.

Une vraie usine à gaz ! On va aller dans le vif du sujet qui m'intéresse : les plugins. Chez Dotclear, pour installer un plugin, on peut simplement taper l'url du plugin dans l'interface d'admin. Le plugin est automatiquement téléchargé, installé et configuré. Super simple pour le noob. On peut aussi télécharger le plugin et le copier dans /plugins/. Au moins c'est clair.

Chez Wordpress, on a pas le choix. Il faut télécharger l'archive du plugin, la décompresser, puis l'uploader par FTP sur son serveur dans le dossier /wp-content/plugins/. Heureusement qu'ils ont une doc, parce qu'il fallait le trouver ce dossier plugins. Ça va être joyeux pour expliquer au noob comment installer ce plugin.

Au niveau du code. Chez Dotclear, tout est super bien organisé. Un fichier pour définir le plugin, un fichier pour définir les actions lorsqu'on est sur la partie publique, un autre éxécuté uniquement lors de l'installation, encore un quand on est dans l'admin. Tout est joyeusement séparé. Et le code est totalement orienté objet. Un objet dcCore à qui on passe des méthodes d'objet en tant qu'événement qui seront éxécuté à tel moment.

Revenons à notre fichier de définition. Chez Dotclear, il s'agit d'un fichier nommé _define.php. Celui-ci contient quelque chose comme ça :

  1. <?php
  2. $this->registerModule(
  3. /* Name */ "Nom du plugin",
  4. /* Description*/ "Description du plugin",
  5. /* Author */ "Nom de l'auteur",
  6. /* Version */ '0.9.1',
  7. /* Permissions */ 'admin'
  8. );
  9. ?>

Chez Wordpress… on a en tout et pour tout un seul fichier (même si on peut scinder soi même en pusieurs fichiers, avec des includes…) Et pour définir le plugin, on doit mettre les infos en commentaire en entête de fichier :

  1. <?php
  2. /*
  3. Plugin Name: Nom du plugin
  4. Plugin URI: http://alt-i.fr
  5. Description: A plugin for Alt-I
  6. Version: 0.9
  7. Author: Hadrien Lanneau
  8. Author URI: http://alt-i.fr
  9. */
  10. ?>

Et tant que ce commentaire ne sera pas dans le fichier, le plugin n'apparaîtra pas dans la liste des plugins disponibles ! Ça doit en foutre un coup coté perfs si Wordpress doit d'abord lire et détecter ce bloc de texte dans chaque fichier contenu dans le dossier de plugin avant d'éxécuter ce même fichier. Imaginez que j'installe 20 plugins, pour tester, puis que je les désactive. Ça fait quand même 20 fichiers à parser et à grepper à chaque chargement de page ! Il vaut mieux penser à les désinstaller ! Oui, évidemment, pour les désinstaller, il faut retourner sur son serveur en FTP, puis virer les fichiers. Vachement convivial. Le noob adore.

Ensuite, c'est de la fonction globale de partout. Le plugin est donc un unique fichier qui contient des fonctions procédurale. On définit ses fonctions, puis ensuite, on appelle une fonction add_action() à laquelle on dit de quelle action il s'agit et le nom de la fonction qu'on veut éxécuter. C'est très moche. J'ai pas autant de motivation à développer que pour la version Dotclear. Pourquoi tant de monde sont-ils sur cette bouse de Wordpress ???