Désactiver ou désinstaller StormPress : ce qui part, ce qui reste
« Se désactive en un clic » est une promesse facile à écrire. Elle mérite un inventaire. Voici précisément ce qui se passe quand vous désactivez StormPress, quand vous le supprimez, et ce qui reste ensuite dans votre base de données.
Une extension WordPress se juge aussi à la manière dont elle s'en va. Beaucoup laissent derrière elles des options, des tables, des tâches planifiées qui tournent encore des années plus tard. Sur un site qui a vu passer cinquante extensions, ces restes finissent par peser.
WordPress distingue deux gestes, et StormPress les traite différemment.
Désactiver : vos données restent en place
Désactiver StormPress depuis l'écran Extensions arrête son fonctionnement sans toucher à vos données :
- l'administration WordPress retrouve exactement son état d'origine : StormPress n'en modifie aucun fichier ni aucun réglage, et ce qu'il y ajoute pendant qu'il est actif (palette ⌘K, graphe sur les écrans classiques, entrées de menu) disparaît avec lui ;
- les tâches planifiées de StormPress et de son connecteur sont retirées ;
- les règles de réécriture enregistrées sont effacées : WordPress les recalcule à la requête suivante, sans les adresses de la PWA de StormPress.
Vos réglages, vos clés chiffrées et vos dossiers de médias restent en place. Réactivez l'extension : vous retrouvez tout. C'est le geste à privilégier pour un essai, un diagnostic ou une suspension temporaire.
Supprimer : ce qui part
Supprimer l'extension depuis l'écran Extensions (après l'avoir désactivée) déclenche son script de désinstallation. Dans la version 4.2.0, il efface :
- les réglages du copilote : fournisseur choisi, clés d'API chiffrées, modèles, limite de débit ;
- les réglages de la PWA et de l'accès croisé (CORS) ;
- l'adresse et la clé de liaison avec StormeoOS, et l'activation du CDN StormCloud ;
- les numéros de version de StormPress et du connecteur (
stormpress_version,stormeo_connector_version) ; - les préférences d'interface de chaque utilisateur : session de l'interface et fond d'écran (
stormpress_session,stormpress_wallpaper) ; - les données de la gouvernance des extensions : cache des fiches WordPress.org, mode et consentement de la vérification, verrou du relevé (options
stormpress_governance_*) ; - le cache du graphe de contenus, les compteurs de limite de débit, et la tâche planifiée de recalcul du graphe ;
- les règles de réécriture enregistrées : WordPress les recalcule à la requête suivante, sans celles de StormPress, y compris après
wp plugin uninstall --deactivate, où l'extension est encore chargée au moment du nettoyage.
Ce script ne s'exécute que si l'extension est supprimée par WordPress lui-même, depuis l'écran Extensions ou avec wp plugin uninstall. C'est une règle de WordPress : effacer le dossier par FTP, ou avec wp plugin delete, retire les fichiers sans rien nettoyer.
Supprimer : ce qui reste
C'est la partie que les pages de présentation passent sous silence. Après suppression, ces éléments restent dans votre base, chacun pour une raison :
| Élément | Où | Pourquoi |
|---|---|---|
| Vos articles, pages et médias, y compris les champs Yoast SEO modifiés depuis StormPress | Tables WordPress ; métadonnées _yoast_wpseo_* | Ce sont vos contenus, et ces champs appartiennent à Yoast SEO : StormPress ne les a jamais possédés |
| Dossiers et étiquettes de médias | Taxonomies sp_media_folder et sp_media_tag | Conservés pour ne pas perdre un classement |
| État du connecteur Stormeo | Options stormeo_* (dernier contact, empreinte d'intégrité, identifiants et secret d'appairage…) ; quelques transients du connecteur | Partagées avec le connecteur Stormeo autonome ; les transients expirent au plus tard six heures après leur dernière mise à jour |
| Quelques caches temporaires | Transients stormpress_media_storage et stormpress_ai_links_* | Ils expirent au plus tard douze heures après leur dernière mise à jour, puis WordPress les purge |
Hors de la base, un seul élément, et seulement si le CDN StormCloud a été activé sur le site : le dossier stormcloud-staging/, que StormPress crée dans le répertoire temporaire de WordPress avec un fichier .htaccess destiné à en bloquer l'accès sous Apache. Ce répertoire peut être wp-content/ quand celui du système n'est pas inscriptible. Chaque fichier y est effacé une fois envoyé au CDN ; un envoi qui a échoué y laisse le sien, qui est alors la seule copie de ce média. Aucun script ne retire ce dossier : si vous n'utilisez plus StormCloud, récupérez ces fichiers avant de le supprimer à la main.
Le cas des options stormeo_* demande une précision. Elles appartiennent au connecteur Stormeo, intégré à StormPress et qui existe aussi comme extension autonome. Un site jamais relié à StormeoOS peut en porter aussi : dès son premier passage, le scan quotidien du connecteur y enregistre l'empreinte d'intégrité des fichiers du cœur (stormeo_file_integrity_baseline), sans rien envoyer. Le script ne retire que l'adresse et la clé de liaison avec StormeoOS et le numéro de version du connecteur. Le connecteur autonome se sert des deux premières : s'il est encore installé, il faudra le réappairer. Ne supprimez les autres options stormeo_* que si aucune extension Stormeo n'est plus installée.
Retirer StormPress avec WP-CLI
Faites d'abord une sauvegarde de la base. Puis procédez dans cet ordre.
Avant la suppression : les dossiers de médias
Les dossiers et étiquettes de médias sont des taxonomies déclarées par StormPress. Une fois l'extension supprimée, WP-CLI refuse de les lister. Faites donc le point pendant qu'elle est encore active :
wp term list sp_media_folder --fields=term_id,name,count
wp term list sp_media_tag --fields=term_id,name,count
Laissés en place, ces termes sont inertes : plus rien ne les lit.
La suppression elle-même
Utilisez la commande qui exécute le script de désinstallation, et non wp plugin delete :
wp plugin uninstall stormpress --deactivate
Après la suppression : vérifier
Sur un site unique, et hors fournisseur d'IA tiers (voir plus bas), rien n'est à effacer à la main du côté de StormPress ; vous pouvez le constater sans rien modifier. La première commande ne doit plus renvoyer aucune option écrite par StormPress, la deuxième liste ce qui reste au connecteur Stormeo :
wp option list --search='stormpress_*' --fields=option_name
wp option list --search='stormeo_*' --fields=option_name
Une exception : si une extension tierce a déclaré son propre fournisseur d'IA auprès de StormPress, sa clé et, s'il en a un, son modèle sont rangés sous des noms de la forme stormpress_<fournisseur>_api_key et stormpress_<fournisseur>_model, que le script ne connaît pas. Supprimez-les tous les deux avec wp option delete. Sur un réseau multisite, répétez la première commande pour chaque site avec --url= suivi de son adresse.
Ces deux options mises de côté, si la première commande renvoie encore plusieurs options, ou si la deuxième renvoie encore stormeo_connector_version, le script n'a pas tourné sur ce site : extension effacée par FTP ou avec wp plugin delete, ou autre site d'un réseau. Réinstallez l'extension et supprimez-la avec wp plugin uninstall, ou supprimez une à une les options listées.
Si stormpress_version est la seule option qui reste, ou si des préférences d'interface subsistent, et que la deuxième commande ne renvoie plus stormeo_connector_version, l'extension a été supprimée dans une version antérieure à la 4.2.0. Si stormeo_connector_version est encore là, le script n'a pas tourné : reportez-vous au paragraphe précédent. Dans le premier cas, ces commandes terminent le travail ; la dernière fait recalculer les règles de réécriture, sans celles de la PWA :
# Uniquement après une suppression antérieure à la 4.2.0
wp option delete stormpress_version
wp db query "DELETE FROM $(wp db prefix)usermeta WHERE meta_key IN ('stormpress_session','stormpress_wallpaper')"
wp rewrite flush
Pourquoi cet inventaire
Gouverner un site WordPress, c'est savoir ce qu'il contient et pourquoi. Une extension qui demande votre confiance doit pouvoir dire exactement ce qu'elle laisse en partant — y compris quand cet inventaire met au jour des défauts, que nous avons corrigés.
Dans le même esprit, nous expliquons où sont rangées vos clés d'API pendant que l'extension est installée.