WordPress : Supprimer les paramètres si le thème est supprimé ?

Publié par Jean-Michel le

Est-il possible d’effectuer une action uniquement si le thème est supprimé (non désactivé) du répertoire des thèmes ?

Par exemple, je souhaite supprimer les paramètres de thème de la base de données après la suppression du thème. Je veux donc exécuter ceci lorsque le thème est supprimé :

delete_option( 'mysettings' );

Solution n°1 trouvée

Il est très complexe de savoir quelle option a été générée par les paramètres de votre thème.

Mais si vous suivez la convention de nom, par exemple Woocommerce (toutes les options créées par Woocomerce ont un nom comme woocommerce_*et woocommerce comme nom de répertoire du plugin). Il facilite la recherche et la suppression des options de thème.

Donc, pour les options de thème, vous pouvez rechercher ceci :

Si le thème actuel s’appelle Deepfocus, son nom d’option devrait ressembler à deepfocus_*

Si le thème actuel est Twenty Twelve, son nom d’option devrait ressembler à vingt-douze_*

Remarque : J’ai créé un plugin simple ( WP-Delete-Theme-Option ) qui suit ces conventions pour supprimer l’option spécifique au thème.

Le plugin génère le nom de l’option à partir du nom du répertoire du thème.

Solution n°2 trouvée

Comme les autres réponses semblent l’impliquer, il n’y a pas de moyen intégré de le faire. Il n’y a pas d’API de désinstallation de thème similaire à celle des plugins. Il existe en fait un ticket de longue date pour ajouter cette fonctionnalité au cœur de WordPress, afin que les thèmes puissent se désinstaller eux-mêmes. Le consensus des principaux développeurs semble être qu’il ne s’agit pas d’une fonctionnalité que les thèmes doivent avoir. Je ne sais pas quelle en est la raison. Peut-être que vous pouvez aider à leur expliquer les avantages de celui-ci.

Solution n°3 trouvée

Le seul crochet d’action/filtre que j’ai trouvé dans cette partie du code est dans

do_action( 'delete_site_transient_' . $transient, $transient );

Il est appelé à l’intérieur delete_site_transient('update_themes');qui est appelé function delete_theme($stylesheet, $redirect = '')après la suppression réussie du thème.

Donc, je ferais cela en ajoutant mon action à delete_site_transient_update_themes. Dans cette action, vous pouvez vérifier certaines conditions (nom du thème) puis supprimer certaines options.

Bien sûr, ce code est appelé lorsque le thème est inactif et après la suppression de son répertoire du serveur. Vous ne pouvez donc pas ajouter cette action dans ce thème (ce serait bien) et vous devez la placer dans un plugin. (Je ne suis pas convaincu si l’installation d’un plugin supplémentaire juste pour être sûr que les options de thème sont supprimées après la suppression de ce thème est une bonne idée).

Catégories : Wordpress

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *