WordPressのオリジナルテーマに「plugin-update-checker」で更新機能を追加してみた
※記事の情報は執筆時点のものとなります(5年前の投稿)
私はWordpressで独自テーマを作り、複数サイトで使っています。
最近、更新機能つけたほうが便利だなって思い、実装してみました。
更新機能の実装は、結論からいえば一週間あれば組み込めました。ちょっと疲弊はした。まぁほとんど調査とテスト。実装は1時間あれば十分。そんな手間かからん。
- スポンサーリンク
Wordoressテーマにプラグインなしで更新機能を追加
参考にしたページ
たぶん、こちらの記事を見たらできます。
とてもわかりやすいです。
私も多少の違いはあれど、上と同じような方法で進めていきます。
01Githubから「plugin-update-checker」のライブラリをもらってテーマに入れる
こちらです。
これはアップデートのチェック機能のライブラリ。
このフォルダをテーマの直下に入れるだけで機能実装完了♪
普通にダウンロードして入れちゃって完了です。
こんな感じですね。
jsonファイルを作る
次にjsonファイルを作ります。
ファイル名はなんでも良いらしいですが、参考記事にならって「theme-update.json」にしました。
jsonがわからない人も怯える必要ありません。
短いお決まり文句を入れるだけです。
中身は3種類。
- “version”
テーマのバージョン(自分で決められる) - “details_url”
テーマの説明ページのURL - “download_url”
テーマファイルのダウンロード先URL
バージョンは自分で任意の文字を入れられるっぽい
例えば私は「1.1.3」とかリリースしたけど、直後にミスとか見つけて修正すると、「1.1.3.1」とか都合よく付け足したりします。ふつうに機能してます。更新できます。
“details_url”はテーマを説明するページ。
個人で作ってる私はそんなページないので、このブログのURLにしてます。
“download_url”は、テーマを置くディレクトリを決めて、そこを記載ます。
例えば、「https://example.com/download/minamino.zip」に置くとしたらそこ。
ポイント
これはテーマの運用上の余計なお世話だけど、最新テーマのディレクトリと、古いバージョンのディレクトリと用意するなら、「https://example.com/download/latest/minamino.zip」とかにしても良いかなと思う。
jsonファイルを置く場所はどこでも良いようです。
(あとでfunction.phpに書くコード内で、辿るURLを書く感じ。)
私の場合は、自分のテーマのディレクトリに置いています。基準となる1テーマを更新したら、残りの他のテーマにも通知がいく仕組みになってます。通知の仕組みは後述。
style.cssファイルに更新日を入れる
こんな感じ。
更新機能に関する記載は最後の「version」です。
jsonファイルとstyle.cssに記載されたバージョンを比べて、「更新があるか」チェックしているわけです。
functionにアップデーターを動かすPHPを書く
最初にダウンロードして配置したupdate checkerのライブララリを動かすためにPHPをちょろっと書きます。
(plugin-update-checkerの”バージョン”はご自身のつかっているバージョンにしてくださいね。)
function.phpに書いてください。
これで毎度、PHPが走るたびに確認をしてくれるようになります。
運用の仕方(テスト)
更新通知の運用のやり方
- 新しいバージョンのテーマファイルを用意する
- style.cssを新しいバージョンに書き直す
- ダウンロード先に新しいテーマファイルのzipを置く
- jsonファイルのバージョンを新しくする
- jsonファイルを置く場所にアップロードする
- 他のテーマに更新通知がいく
こんな流れになります。
ダッシュボード上でテーマの更新通知が現れるようになるかと思います。
テーマ内にjsonを置くとこうなる
私の場合はテーマ内にjsonファイルを置いてます。
なので基準となるテーマサイト(本ブログ)は手作業でアップデートし、あとのテーマを使っているサイトたちはダッシュボードから更新しています。
しかし結局、手動アップデートが面倒くさくなって基準テーマもjsonファイルだけ先にアップロードして、通知を起こしてからダッシュボードで更新かけてます。なんかややこしくなった……。
追記:結局、べつの場所に用意した
結局、テーマ置き場を別でつくって、そこにjsonファイルを置くことにしました。そっちのほうが運用も楽でした。あたりまえか。
あと余談ですが開発環境でテーマ更新したらgitファイルが消えました。そりゃそうか。開発環境でテーマ更新しちゃダメだよね。
※記事で紹介したコードは動作を保証するものではございません。必ず自己責任で使用してください。コードを使う際はテストを行い、動作検証をおこなってください。