register_uninstall_hook()
Définition : register_uninstall_hook() enregistre un callback de désinstallation pour un plugin WordPress. Il permet d’exécuter un nettoyage lors de la suppression de l’extension, sans recourir à un fichier uninstall.php distinct.
Terminologie
Terme officiel : register_uninstall_hook()
Autres appellations : Callback de désinstallation
À quoi cela sert
Il répond au même besoin de cycle de vie que le fichier uninstall.php : traiter les données propres à l’extension au moment de sa suppression. Le callback doit être une fonction ou une méthode statique accessible pendant la désinstallation.
Comment cela fonctionne
L’enregistrement associe le fichier principal à un callable que WordPress mémorise. L’exécution de ce callback peut nécessiter le chargement du fichier du plugin ; les effets de bord globaux sont donc particulièrement indésirables.
Dans quel contexte l’utiliser
Approprié pour un plugin très simple dont la procédure de désinstallation est une fonction autonome, avec peu de dépendances et sans initialisation complexe.
Exemple concret
Une petite extension pédagogique stocke une préférence et souhaite la supprimer seulement lorsqu’elle est désinstallée.
Exemple de code commenté
<?php
// Dans le fichier principal : fonction nommée, non anonyme.
function atoolpha_demo_uninstall() {
delete_option( 'atoolpha_demo_preference' );
}
register_uninstall_hook( __FILE__, 'atoolpha_demo_uninstall' );
// Ne pas créer en plus uninstall.php pour le même plugin.
Explication pas à pas de l’exemple
La fonction atoolpha_demo_uninstall est enregistrée comme routine durable de désinstallation. WordPress pourra l’appeler lors de la suppression. Une fonction nommée reste résoluble ; une fermeture anonyme n’est pas adaptée à cet enregistrement.
Résultat attendu
L’option de démonstration est supprimée lors de la désinstallation, et demeure intacte lors d’une simple désactivation.
Précautions et limites
Le manuel WordPress privilégie souvent uninstall.php pour éviter le chargement d’un fichier comportant du code global. Enregistrer le hook hors d’une routine appelée à chaque requête pour éviter des écritures répétées.
À ne pas confondre
Contrairement à un fichier uninstall.php, la constante WP_UNINSTALL_PLUGIN n’est pas définie pour l’exécution via register_uninstall_hook().
Termes associés
- uninstall.php
- Plugin Lifecycle
- delete_option()
