Chapitre 10 sur 20
Créer des templates et plugins
Les templates de page permettent de proposer depuis le back-office plusieurs choix de layout pour une page. Les plugins offrent une abstraction afin de placer de la logique dans un conteneur réutilisable et indépendant du thème.
Les templates et les plugins ont pour point commun de commencer par un commentaire spécial, indiquant à WordPress leur rôle particulier.
Templates de page
Lorsque vous créez un thème, vous créez des templates plus ou moins génériques : index.php
, page.php
, category.php
, taxonomy.php
, front-page.php
, page-contact.php
. Chacun de ces templates s’applique automatiquement en fonction du contenu et de sa position dans la template hierarchy.
Cependant, les templates de page permettent de prendre le dessus sur l’application automatique en fonction de la hiérarchie car c’est directement l’utilisateur qui désigne le template en back-office.
Un template de page est structuré exactement de la même manière que tous les autres templates. La seule différence est qu’il commence par un tag indiquant qu’il s’agit d’un template.
<?php /* Template Name: Mon super template */ ?>
Si votre thème possède au moins un template commençant par ce commentaire, vous aurez dans le back-office des pages un menu déroulant permettant de choisir un template spécifique ou de laisser le comportement par défaut.
Naming et organisation
On évitera de nommer le template en le préfixant par page-
(car WP penserait qu’il s’agit d’un template spécialisé) et on evitera également les noms réservés.
WordPress reconnaît le répertoire page-templates
. Aussi, c’est une bonne pratique de regrouper les templates de page dans ce dossier. Vous vous y retrouverez plus facilement.
Les plugins
Nous l’avons mentionné dans le chapitre sur l’organisation du code, lorsque l’on considère WP comme un framework, séparer l’aspect logique du thème n’a pas forcément une grande utilité.
Il peut cependant arriver que l’on veille placer de la logique dans un plugin. Dans sa forme la plus simple, un plugin est un fichier PHP contenant une en-tête, tout comme les templates, et placé dans le répertoire plugins/
de wp-content/
.
<?php /* Plugin Name: Mon super plugin */ ?>
Vous avez là un plugin, qui ne fait et ne sert à rien, mais qui est déjà visible dans l’admin de WP et qu’il est possible d’activer et de désactiver.
Vous pouvez spécifier bien d’autres informations dans le header. Par ailleurs, afin de bien organiser le code d’un plugin non trivial, il est courant de séparer ce dernier en plusieurs fichiers, lesquels sont regroupés dans un dossier.
Lorsque le plugin est organisé dans un dossier, le nom du plugin est aussi le nom du dossier et du fichier d’entrée.
plugins/
plugin-name/
plugin-name.php
…
L’autre fichier possédant un nom spécifique est uninstall.php
, lequel sera exécuté lors de la suppression du plugin. Ce n’est pas une obligation de le créer, mais s’il existe, il sera exécuté lors de la suppression du plugin. Pour tout le reste, vous êtes le maître à bord !
Les hooks des plugins
Mis à part le uninstall.php
, vous disposez de plusieurs hooks permettant de gérer le cycle de vie du plugin :
register_activation_hook
,register_uninstall_hook
, lequel sert le même rôle queuninstall.php
,register_deactivation_hook
, à ne pas confondre avec uninstall, ici on ne supprime pas tout, on désactive (potentiellement temporairement).
Les hooks prennent en premier paramètre le nom du plugin, incluant le path. Si vous respectez les conventions ne nommage précédemment expliquées, vous pouvez tout simplement utiliser la constante magique __FILE__
.
register_activation_hook(__FILE__, function () {
…
});
Les plugins ne sont ni plus ni moins que des scripts PHP, vous disposez de toutes les fonctions et méthodes de PHP et WordPress et vous devez faire attention aux collisions de naming (utilisez les namespaces). Il existe un boilerplate de plugin que vous pouvez utiliser pour accélérer le démarrage.
Dans le prochain chapitre, nous allons découvrir comment créer des champs personnalisés afin de créer des mises en page complexes.
Commentaires
Rejoignez la discussion !