web-dev-qa-db-fra.com

Mise à jour de thème privé avec archive Zip sans désactiver le thème

J'ai un thème privé et je souhaite déployer les nouvelles versions du thème de manière aussi fluide que possible.

J'ai entendu parler de:

  • héberger le thème quelque part comme wp-updates.com
  • utiliser des plugins pour mettre à jour automatiquement le thème directement à partir d'un référentiel (à l'aide de plugins tels que https://github.com/afragen/github-updater ou https://wordpress.org/plugins/revisr/ )
  • télécharger l'archive Zip avec une version plus récente du thème (il faut activer un autre thème, supprimer la version précédente du thème et charger une nouvelle archive Zip avec la nouvelle version du thème).

J'ai donc eu l'idée de mettre à jour le thème en utilisant à chaque fois un fichier Zip portant un nom différent (par exemple my-awesome-theme-0.1.Zip et ainsi de suite).

Est-ce une bonne idée ou est-ce que je manque quelque chose?

1
chestozo

J'utilise cette approche pour les mises à jour de thèmes privés à l'aide d'archives versionnées et elle semble fonctionner assez bien pour moi. Aucun problème trouvé pour le moment. Donc, je suppose que pour les thèmes privés - c'est un bon.

Aussi, je suis venu avec un script pour construire des archives de thèmes versioned comme ceci:

#!/bin/bash

echo "======================";
echo "BUILDING THEME ARCHIVE";
echo "======================";

# Get version from style.css and CHANGES.md and compare them.
# If they are the same - proceed.

VER_STYLE="$(cat style.css | grep 'Version: ' | Perl -pe "s/Version: (.*)\\n/\1/g")"
VER_CHANGES="$(head -n 1 CHANGES.md | xargs | awk '{ print $2 }')"

if [ $VER_STYLE != $VER_CHANGES ]; then
    printf "\e[31;5;21m%s\e[0m\n" "BUILD FAILED"
    echo "Your version in style.css ($VER_STYLE) differs from version in CHANGES.md ($VER_CHANGES).";
    echo "Please actualize.";
    exit 1;
fi

# Theme archive build.
# Also create a new tag for builded version.

build_name="my-theme_$VER_STYLE.Zip"

echo "Building $build_name ...";

Zip -r -q \
    --exclude=.* \
    --exclude=sass/* \
    --exclude=*/.DS_Store \
    --exclude=*.md \
    --exclude=*.Zip \
    --exclude=*.sh \
    $build_name . && git tag $VER_STYLE && git Push --tags && printf "\e[32;5;21m%s\e[0m\n" "done" ;

exit 0;
0
chestozo

Avec un accès direct au serveur , en général , les utilisateurs téléchargent/synchronisent simplement les modifications de fichier par dessus. Cependant, cela laisse la possibilité que quelqu'un visite le site au moment où le thème est en cours de mise à jour.

La façon de le faire avec une interruption minimale:

  1. Téléchargez la nouvelle version dans un répertoire distinct (par exemple, theme-name-update).
  2. Renommez l'ancien répertoire de thème (theme-name> theme-name-old).
  3. Renommez le répertoire de mise à jour (theme-name-update> theme-name).

Lorsque vous effectuez les étapes 2 et 3 dans une commande CLI (ou si vous disposez d'un script), le swap est extrêmement rapide et peu susceptible de poser problème.

0
Rarst