web-dev-qa-db-ja.com

テーマを非アクティブ化せずにZipアーカイブでプライベートテーマを更新

私は私用のテーマを持っています、そしてそれをできるだけスムーズに新しいテーマバージョンをデプロイしたいです。

私は聞いたことがあります。

  • wp-updates.comのようなどこかでテーマをホストしている
  • プラグインを使用してリポジトリから直接テーマを直接自動的に更新する( https://github.com/afragen/github-updater または https://wordpress.org/plugins/revisr/
  • 新しいバージョンのテーマでZipアーカイブをアップロードする(別のテーマをアクティブにし、以前のテーマバージョンを削除し、新しいテーマバージョンで新しいZipアーカイブをアップロードする必要があります)。

そこで、毎回違う名前のZipファイルを使ってテーマを更新するというアイデアを思いついた(例えばmy-awesome-theme-0.1.Zipなど)。

それは良い考えでしょうか、それとも何かが足りないのですか。

1
chestozo

私はバージョン管理されたアーカイブを使ったプライベートテーマの更新にこのアプローチを使っていて、それは私にはかなりうまくいくようです。まだ問題はありません。だから私は個人的なテーマを推測します - それは良いものです。

また、私はこのようなバージョン管理されたテーマアーカイブを構築するためのスクリプトを思い付きました:

#!/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

サーバーに直接アクセスすると通常人々は単にファイルの変更をアップロード/同期します。しかしながら、これはテーマが更新されている過程で誰かがそのサイトを訪れている可能性を残します。

最小限の中断でそれを行う方法:

  1. 新しいバージョンを別のディレクトリにアップロードします(例:theme-name-update)。
  2. 古いテーマディレクトリの名前を変更します(theme-name> theme-name-old)。
  3. 更新ディレクトリの名前を変更します(theme-name-update> theme-name)。

1つのCLIコマンドでステップ2と3を実行すると(またはスクリプトが作成されると)、スワップが非常に速く行われ、問題が発生しにくくなります。

0
Rarst