web-dev-qa-db-fra.com

comment tester une mise à jour de thème

Existe-t-il un moyen de tester un thème via le programme de mise à jour automatique?

Nous avons un thème où une version introduira de nouvelles fonctionnalités qui pourraient casser des thèmes existants. Je voudrais vérifier la version précédente du thème lors de la mise à niveau et inclure du code spécifique à la mise à niveau si la mise à niveau est effectuée entre deux versions.

J'ai d'abord pensé pouvoir utiliser after_theme_switch hook, mais le thème est principalement utilisé comme thème parent et sera probablement mis à niveau sans être le thème actif. J'ai étudié la possibilité d'utiliser les hooks upgrader_pre_install et upgrader_post_install, mais comment les tester?

L'ultime serait de l'avoir comme test unitaire, mais tout autre moyen de simuler une mise à niveau serait génial. Le téléchargement d'un fichier Zip est considéré comme une installation et non une mise à niveau.

Est-ce même possible à partir d'un thème, devrais-je envisager d'écrire un plugin de mise à niveau factice?

4
middlesister

Vous posez deux questions. La première est de savoir comment tester une mise à jour et l’autre, comment exécuter du code après une mise à jour.

Vous pouvez tester une mise à jour de thème en transmettant les mises à jour vous-même et en les testant si cela fonctionne. Vous pouvez le faire en utilisant GitHub Updater .

Si vous souhaitez exécuter le code uniquement après une mise à niveau, il n'existe pas de solution principale. Cela pourrait fonctionner de deux manières.

  1. Vous enregistrez la version du thème dans la base de données car avec cela, vous pouvez calculer quelle est la version ou la mettre à jour, puis exécuter le code de mise à jour.
  2. Si vous incluez de nouvelles options dans la mise à jour, vous pouvez vérifier si les nouvelles options existent déjà et sinon, exécutez le code de mise à jour.

Je pense que le after_setup_theme devrait aller.

2
grappler

C'est la solution que je me suis trouvée jusqu'à présent. Mon code peut être trouvé dans cet Gist: https://Gist.github.com/middlesister/8652490

Récupérez la version précédente du thème et stockez-la dans un élément transitoire sur upgrader_pre_install. Comparez la version précédente du thème sur upgrader_post_install et voyez si la mise à niveau provient d'une version spécifique. Définissez un drapeau dans le transitoire si c'est le cas.

Vérifiez le transitoire et si l'indicateur est défini, faites ce dont j'ai besoin et supprimez le transitoire par la suite. J'ai essayé le crochet upgrader_process_complete mais cela ne semblait pas fonctionner, alors j'ai ajouté cela sur le crochet init. Cela signifie que le code sera exécuté lors de l'actualisation de la page suivante, mais comme le transitoire est configuré pour vivre pendant une heure, je peux vivre avec cela.

Les tests unitaires sont concluants et j'ai essayé de mettre le code dans un plugin tout en utilisant le programme de mise à jour automatique pour mettre à niveau une ancienne version vers la version actuelle et il semble que ce que je veux faire.

Le problème est que je dois faire exécuter ce code d’une manière ou d’une autre.

0
middlesister