web-dev-qa-db-fra.com

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

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 une fois le thème supprimé. Donc, je veux exécuter ceci lorsque le thème est supprimé:

delete_option( 'mysettings' );
4
jay

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èmes similaire à celle des plugins . Il existe actuellement un ticket de longue date pour que cette fonctionnalité soit ajoutée à WordPress Core, afin que les thèmes puissent se désinstaller. Le consensus de des principaux développeurs il semble bien que ce ne soit pas une fonctionnalité qui veuille des thèmes. Je ne suis pas sûr de la raison de cela. Peut-être pourriez-vous aider à leur expliquer les avantages.

2
J.D.

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 convection name, par exemple Woocommerce (toutes les options créées par Woocomerce ont un nom tel que woocommerce_* et woocommerce en tant que nom de répertoire du plugin). Il est facile de rechercher et de supprimer des options de thème.

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

Si le thème en cours s'appelle Deepfocus, son nom d'option doit ressembler à deepfocus_ *.

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

Note : J'ai créé un plugin simple ( WP-Delete-Theme-Option ) qui suit ces conventions pour supprimer une option spécifique à un thème.

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

0
Ravinder Kumar

cela dépend vraiment totalement de l'auteur du thème, je pense ... certains font mieux la collecte des ordures que d'autres. Je viens juste de finir de parcourir ma table wp_options en essayant de localiser une cause ... et ce faisant, j'ai trouvé une tonne d'options de thème pour les thèmes supprimés depuis longtemps et disparus du serveur. Heureusement, ceux qui avaient le plus d’options dont je voulais me débarrasser et nettoyer ma table, l’auteur avait mis un préfixe Nice sur tous ses fichiers afin de pouvoir les identifier facilement. Allez dans votre table et voyez si c'est une affaire pour vous. Si c'est le cas, vous pouvez alors écrire une requête appropriée.

De plus, les transitoires et sites_transients sont supposés se supprimer au bout d'un certain temps ... ce n'est pas toujours le cas non plus. J'ai supprimé des pages et des pages de ceux manuellement aussi.

Je ne sais pas si cela répond à la question. On dirait que vous voulez générer une fonction php ... Je voudrais faire une requête mySql et le faire de cette façon. (avec des sauvegardes de base d'abord, bien sûr!)

0
Oxnard Developer

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

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

Cela s'appelle à l'intérieur de delete_site_transient('update_themes'); qui est appelée dans function delete_theme($stylesheet, $redirect = '') après la suppression du thème.

Je ferais donc ceci 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 que son répertoire a été supprimé du serveur. Donc, vous ne pouvez pas ajouter cette action dans ce thème (ce serait Nice) et vous devez la placer dans un plugin. (Je ne suis pas convaincu que l'installation d'un plug-in supplémentaire simplement pour être sûr que les options de thème soient supprimées une fois le thème supprimé est une excellente idée).

0
Krzysiek Dróżdż

Je ne sais pas si j'ai bien compris la question, je vais donc d'abord la reformuler, mais si c'est le cas, j'ai déjà résolu ce problème.

Comprendre la question comme:

Si le thème est désactivé, les options du site sont conservées. Par conséquent, si elles sont réactivées, elles n'ont pas besoin d'être saisies à nouveau, mais elles sont complètement supprimées lorsqu'elles sont supprimées.

Ce n'est pas une réponse complète car il s'agit du plug-in désactivant par rapport aux crochets de désinstallation plutôt que du thème, mais en supposant que le thème ait quelque chose de similaire, voici ce que j'ai fait:

  1. À la désactivation, j'ai inséré les paramètres d'option dans un petit tableau de sauvegarde.
  2. Lors de l'activation, vérifiez si la table de sauvegarde existe et, dans l'affirmative, restaurez les paramètres d'option à partir de la sauvegarde et supprimez la table (ou recherchez simplement la ligne et supprimez-la). Assurez-vous de nommer la table afin qu'elle soit clairement liée au thème, comme dans les notes ci-dessus sur woocommerce. Et supprimez toujours les paramètres après leur utilisation afin de vous assurer que les paramètres les plus récents sont disponibles.
  3. Lors de la suppression, agissez normalement (ce qui supprime définitivement les paramètres de l’option).

De cette façon, l'utilisateur n'a pas à refaire les réglages d'options s'il doit le désactiver pour vérifier les conflits de plugins et de thèmes (comme je l'avais récemment fait avec un thème Woo).

0
Margaret Fisk