Lorsque l’on crée une extension plugin pour wordPress, on est amené à créer des options que l’on stocke dans la table wp_options
. On peut aussi créer une ou plusieurs tables en base de données pour faire fonctionner l’extension. Quand un utilisateur active le plugin, ces options et/ou tables sont créées en base de données. Lorsque cette extension est désactivée, ces options et tables reste en base de données, au cas ou l’utilisateur la réactiverait. Mais s’il décide de supprimer, d’effacer l’extension, il faut supprimer ces informations dans la base données. Il y a un fichier magique qui est lancé, s’il existe dans le répertoire racine du plugin, lorsque l’extension est supprimée : uninstall.php
.
On code donc ce fichier pour effacer les options et supprimer les tables créées par l’extension. On remplit le tableau $options
avec les options créées par l’extension, et le tableau $tables
par les tables à supprimer. Si ces tableaux sont vides, ce fichier ne fera rien. On teste la définition de la constante WP_UNINSTALL_PLUGIN
, cette constante est définie par Wordpress lorsque qu’il invoque le fichier uninstall.php
. Cela évitera que le fichier soit lancé dans une autre situation.
uninstall.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<?php // Runs when plugin is deleted if( ! defined('WP_UNINSTALL_PLUGIN') ) { die(); } // Drops custom options $options = [ 'option1', 'option2', ]; foreach( $options as $option ) { delete_option( $option ); } // for site options in Multisite foreach( $options as $option ) delete_site_option( $option ); } // Drops custom database tables $tables = [ 'table1', 'table2', ]; global $wpdb; foreach( $tables as $table ) { $query = "DROP TABLE IF EXISTS {$wpdb->prefix}{$table}"; $wpdb->query( $query ); } |
Et hop, avec ce fichier, correctement écrit dans le répertoire racine du plugin, un utilisateur peut supprimer le plugin sans qu’il reste des résidus en base de données.