it-swarm-ja.com

テーマのアップグレードをテストする方法

自動アップデータを介してテーマをテスト実行する方法はありますか?

私たちは、バージョンが既存のテーマを壊すかもしれない新しい機能性を導入するというテーマを持っています。アップグレード時に以前のテーマバージョンを確認し、アップグレードが特定の2つのバージョン間の場合は、アップグレード固有のコードを含めます。

私は最初after_theme_switchフックを使うことができると思いましたが、テーマは主に親テーマとして使われており、おそらくアクティブなテーマではない間にアップグレードされるでしょう。 upgrader_pre_installupgrader_post_installフックの使い方を調べましたが、どうやってこれらをテストするのですか?

最終的にそれを単体テストとして持つことになるでしょうが、モックアップする他の方法は素晴らしいでしょう。 Zipファイルのアップロードはインストールとして扱われ、アップグレードは行われません。

これはテーマの中からでも可能ですか?私たちはモックアップグレードプラグインを書くことを検討するべきですか?

4
middlesister

あなたは二つの質問をしています。 1つはアップデートをテストする方法、もう1つはアップデート後にコードを実行する方法です。

最新版を自分のものにプッシュし、それが機能するかどうかをテストすることで、テーマの最新版をテストできます。あなたは GitHub Updater を使ってそれをすることができます。

アップグレード後にのみコードを実行したい場合は、コアソリューションはありません。それが働くことができる2つの方法があります。

  1. テーマのバージョンをデータベースに保存します。これにより、バージョンを計算したり更新したりできます。その後、更新コードを実行します。
  2. アップデートに新しいオプションを含める場合は、新しいオプションがまだ存在するかどうかを確認し、存在しない場合はアップデートコードを実行します。

after_setup_themeは問題ないはずです。

2
grappler

これが私が今まで見つけた解決策です。私のコードはこの要旨にあります。 https://Gist.github.com/middlesister/8652490

以前のテーマバージョンを取得して、upgrader_pre_installのトランジェントに保存します。 upgrader_post_installの以前のテーマバージョンを比較して、アップグレードが特定のバージョンからのものかどうかを確認します。もしそうであれば、トランジェントにフラグを設定します。

トランジェントをチェックし、フラグが設定されている場合は、必要な操作を実行してからトランジェントを削除します。私はupgrader_process_completehookを試しましたが、うまくいかないようでしたので、それをinitフックに追加しました。これは、コードが次のページの更新時に実行されることを意味しますが、トランジェントは1時間有効になるように設定されているので、それを有効に使用できます。

単体テストは成功しています、そして私は古いバージョンから現在のバージョンにアップグレードするために自動アップデータを使用している間プラグインにコードを入れてみました、そしてそれは私が望むことをするようです。

問題は、どうにかしてこのコードを実行させる必要があるということです。

0
middlesister