サイトは一部アフィリエイトを含みます。
マガジン「沖縄で家づくり」読んでみてね!

WordPressのオリジナルテーマに「plugin-update-checker」で更新機能を追加してみた

私はWordpressで独自テーマを作り、複数サイトで使っています。

最近、更新機能つけたほうが便利だなって思い、実装してみました。

更新機能の実装は、結論からいえば一週間あれば組み込めました。ちょっと疲弊はした。まぁほとんど調査とテスト。実装は1時間あれば十分。そんな手間かからん。

スポンサーリンク

Wordoressテーマにプラグインなしで更新機能を追加

参考にしたページ

たぶん、こちらの記事を見たらできます。
とてもわかりやすいです。

私も多少の違いはあれど、上と同じような方法で進めていきます。

01Githubから「plugin-update-checker」のライブラリをもらってテーマに入れる

こちらです。

これはアップデートのチェック機能のライブラリ。

このフォルダをテーマの直下に入れるだけで機能実装完了♪
普通にダウンロードして入れちゃって完了です。

ディレクトリ構造

私のテーマ「minamino」のディレクトリを例に。(わかりやすいようにディレクトリ構造は簡略化してあります)

こんな感じですね。

jsonファイルを作る

次に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に記載されたバージョンを比べて、「更新があるか」チェックしているわけです。

更新チェック

jsonのバージョンを見て、自分のところのstyle.cssのバージョンより高いか比べてる。私の場合はこのブログ(テーマサイト)がdetails_urlに当たるけど、そうじゃなくても動く

functionにアップデーターを動かすPHPを書く

最初にダウンロードして配置したupdate checkerのライブララリを動かすためにPHPをちょろっと書きます。

(plugin-update-checkerの”バージョン”はご自身のつかっているバージョンにしてくださいね。)

function.phpに書いてください。

これで毎度、PHPが走るたびに確認をしてくれるようになります。

運用の仕方(テスト)

更新通知の運用のやり方

  • 新しいバージョンのテーマファイルを用意する
  • style.cssを新しいバージョンに書き直す
  • ダウンロード先に新しいテーマファイルのzipを置く
  • jsonファイルのバージョンを新しくする
  • jsonファイルを置く場所にアップロードする
  • 他のテーマに更新通知がいく

こんな流れになります。

更新通知

ダッシュボード上でテーマの更新通知が現れるようになるかと思います。

テーマ内にjsonを置くとこうなる

私の場合はテーマ内にjsonファイルを置いてます。

なので基準となるテーマサイト(本ブログ)は手作業でアップデートし、あとのテーマを使っているサイトたちはダッシュボードから更新しています。

しかし結局、手動アップデートが面倒くさくなって基準テーマもjsonファイルだけ先にアップロードして、通知を起こしてからダッシュボードで更新かけてます。なんかややこしくなった……。

追記:結局、べつの場所に用意した

結局、テーマ置き場を別でつくって、そこにjsonファイルを置くことにしました。そっちのほうが運用も楽でした。あたりまえか。

あと余談ですが開発環境でテーマ更新したらgitファイルが消えました。そりゃそうか。開発環境でテーマ更新しちゃダメだよね。

※記事で紹介したコードは動作を保証するものではございません。必ず自己責任で使用してください。コードを使う際はテストを行い、動作検証をおこなってください。

閉じる