独自のアップデートチェッカーを作成する際、更新用のZIPファイルにおける注意点
以前、アップデートチェッカーを作成する方法を書いたことがあるのですが、そういえばZIPファイルについて書いていなかったのでちょっと追記するような形で書いておきます。
関連記事:テーマやプラグインに独自のアップデートチェッカーを適用させる方法
僕はテスト段階ではよく忘れてしまうのですが、ワードプレスのテーマやプラグインを作成する際、GitアーカイブでZIPファイルを作成することがあります。
これをそのままアップロードしてインストールする場合は何も問題は起きないかもしれませんが、独自のアップデートチェッカーにより更新用のZIPファイルとして利用すると問題になる場合があるんですよ。
ディレクトリ名が変更される
Gitではハッシュ値でパッケージが管理されますし、それがアーカイブにした時にも反映されているのかもしれません。
例えば、私用に作った「Package Update Server for WooCommerce」というプラグインで、更新用のZIPファイルを配信することができるものが有ります。
ZIPファイルをアップデートチェッカーで受け取るまでは「git archive」でも大丈夫なのですが、受け取って展開させるとディレクトリ名が「download-file-HASH」のような名前になっちゃうんですよ。
テーマとプラグインの両方で試しましたが、そのどちらでも同様の現象が確認できました。
まぁ独自のアップデートチェッカーですので、サポートが無いのも承知でしたがこれって結構厄介なんです。
と言うのは、テーマやプラグインにとって、ディレクトリ名はIDの一部のようなものですので、これが変更されてしまうと有効化されている限りそのプラグインとして機能してくれるでしょうが、次の更新を受け取ることが難しくなります。
そんなディレクトリを追跡するためだけに毎回ディレクトリ名を保存・管理するのも馬鹿らしいですし、テーマなどの専用プラグインを作成すると、対象となるテーマやプラグインのバージョンなどを確認するためにディレクトリ名で識別しますから、専用プラグインが機能しなくなることが考えられるんですよ。
ZIPファイルにする際は「wp dist-archive」で
そういった問題を回避するために、かどうかは分かりませんが、ワードプレスには「WP CLI」というコマンドラインツールが有ります。
そのプラグインのようなもので「dist-archive」というパッケージが用意されていますので、これを使用してZIPファイルにしてしまうことで、「git archive」で作成したZIPファイルで起こるような問題は解消されます。
「.gitattributes」のように不要なファイルを除外することもできますから、gitなどと併用しながら作成することも問題有りません。
インストール
インストール方法は非常に簡単です。
WP CLIをインストールしている状態で
wp package install wp-cli/dist-archive-command
と、これでインストール完了です。
説明にもなりませんが、インストール作業は本当にこれだけです。
参照ページ:wp dist-archive | WordPress Developer Resources
使い方
テーマやプラグインのフォルダのルートに「.distignore」というファイルを作成し、「.gitignore」のようにアーカイブに含みたくないファイルなどをテキスト入力していきます。
あとは、テーマやプラグインのパスを指定して、コマンド入力するだけです。
wp dist-archive PATH
そうすると、プラグインディレクトリにZIPファイルが生成されます。
※ ファイルを全て含む場合(無視したいファイルが無い場合)であっても、空もしくは自身を指す「.distignore」だけでもいいので「.distignore」は作成してください。このファイルが存在しない場合はエラーとなり、アーカイブファイルは生成されません。
テーマなら「フォルダ名.zip」で、プラグインなら「フォルダ名.バージョン.zip」のような形になります。
プラグインのような場合でも、展開後のフォルダ名ではバージョン部分が消えていますので、そのままアップロードして更新用のZIPファイルとして利用することができるんですよ。