[WordPress] 自作テーマにアップデート通知機能を付けるカスタマイズ方法

自作テーマでもバージョンアップ通知を付けたい

WordPress公式のテーマディレクトリに登録されているテーマは、バージョンアップが行われると、それを通知してくれる機能を持っています。テーマの更新もその通知に従って管理画面から実行することが可能です。

テーマディレクトリに登録されていない自作(野良)テーマの場合でも、plugin-update-checker というツールを使うことで、Wordpressのテーマに更新通知機能を実装することが可能です。

plugin-update-checker

サーバーにテーマファイルとテーマの詳細を記述したjsonファイルを配置するだけで、plugin-update-checker は定期的に更新の確認を行い、更新されている場合はそれを通知し、管理画面からの操作でテーマファイルの更新を行ってくれます。

上記レポジトリのページに書いてある手順に沿えば実装可能です。具体的には以下の手順が必要です。順番に見ていきます。

  1. テーマファイルとテーマ詳細のjsonを公開する
  2. plugin-update-checkerをテーマに組み込む
  3. functions.php に処理追加

テーマファイルとテーマ詳細のjsonを公開

まず、更新するテーマファイルをダウンロードできる環境に公開する必要があります。zip化したテーマファイルを作成し、適当なURLでダウンロードできるように公開します。

現在のバージョンやテーマの詳細を記述したjsonファイルを作成し、同じく適当なURLで公開します。

テーマのzipとjsonファイルを以下のURLで公開したとして以下話を進めます。

jsonファイルの内容

公開するJsonファイルは次のようにします。

{
    "version": "1.0.0",
    "details_url": "http://example.com/my-theme-details-1.0.0.html",
    "download_url": "http://example.com/my-theme-1.0.0.zip"
}

details_url には、テーマの詳細が書かれたページを指定します。download_url には、最新版のテーマファイルをダウンロードするURLを指定します。version には、このURLでダウンロードできるバージョンを指定します。

バージョンアップの際に、最新版のテーマファイルを公開し、このJsonファイルの version を更新し、URLも適宜修正します。

plugin-update-checkerは定期的にこのJsonを確認し、バージョンアップを確認すると更新を通知し、ダウンロード先からファイルを入手して更新してくれるという仕組みです。

plugin-update-checkerをテーマに組み込む

では更新ファイルを用意できたので、テーマに plugin-update-checker を組み込みます。上記URLで最新のものを入手し、解凍しておきます。解凍してできたディレクトリを、テーマディレクトリのどこでもいいので配置します。ここではテーマディレクトリ直下に配置して進めます。

こんな感じの構成になります。バージョンは4.4が最新だったのでこうなってます。

[テーマ名]
├── plugin-update-checker-4.4
│   ├── plugin-update-checker.php
│   └── 色々 ...
├── index.php
├── style.css
└── 色々 ...

functions.php に処理を追加

functions.php に処理を追加し、plugin-update-checker を実行します?

require 'plugin-update-checker-4.4/plugin-update-checker.php';
$myUpdateChecker = Puc_v4_Factory::buildUpdateChecker(
    'http://example.com/my-theme.json', // 更新確認のJSON
    __FILE__,
    'my-theme' // テーマ名
);

先ほど組み込んだ plugin-update-checker ディレクトリの plugin-update-checker.php を require します。

その次の行は更新確認のおまじないです。1つ目の引数には上で公開したJsonファイルのURLを指定します。3つ目の引数はテーマ名です。

テーマ更新通知の確認

設定は以上です。あとはJsonのバージョンとテーマのバージョンが異なれば更新を通知してくれます。Jsonを更新しても通知はすぐに反映されるわけではないみたいですが、定期的にJsonファイルを確認して、更新があれば通知します。

例えば公開されているJsonとテーマの style.css が次のようになっている場合はテーマ管理絵ページで次のように表示されます。

{
    "version": "1.0.0",
    "details_url": "http://example.com/my-theme-details-1.0.0.html",
    "download_url": "http://example.com/my-theme-1.0.0.zip"
}
/*!
Theme Name: WP-NIH
Theme URI: https://wp-nih.com/
Author: TM
Author URI: https://wp-nih.com/
Version: 0.1.3
*/

[今すぐ更新]のリンクからテーマを更新することが可能です。テーマの詳細を表示すると、こんな感じです。

[バージョン x.x.x の詳細を表示]のリンクをクリックすると、Jsonファイルで指定しているdetails_urlを表示してくれます。

注意点

テーマの更新通知は上記の通り、Jsonとstyle.css のバージョンを比較して行われます。

したがって、style.cssのバージョンを更新せずに、Jsonのバージョンだけ更新して公開してしまうと、何度更新しても無限に更新が通知されるようになってしまいます。

気を付けましょう。

以上、自作テーマに更新通知機能を実装する方法でした。