別サイトでオリジナルのWordPressテーマ「4536」を配布しているんですが、最近ようやく「管理画面で更新できる機能」を実装しました。
本来は、アップデートの度に配布サイトでダウンロードしてファイルを差し替える必要があるんですが、公式サイトやプラグインのように管理画面で更新できた方が絶対便利ですからね。
ということで今回は、そのカスタマイズ方法について詳しくご紹介するので、WordPressテーマの開発者に参考にしていただければと思います!
ライブラリのダウンロードとアップロード
まずは、公式の配布サイトから最新版のライブラリをダウンロードします。
zipファイル、tar.gzファイル、どちらをダウンロードしても大丈夫です。
そのファイルを解凍し、オリジナルテーマフォルダ直下にアップロード。
jsonファイルの作成
次に、jsonファイルを作成(アップロード)します。ファイル名はtheme-update.jsonのようなわかりやすい名前にしましょう。
このファイルは、テーマファイルのバージョンが変わったことを知らせる役割を果たします。
どこに作成してもいいですが、今回は、
- 配布しているオリジナルテーマを配布サイトに適用している
- テーマ直下(header.phpとかsidebar.phpがある場所)にjsonファイルを作成する
というケースでの手順をご紹介します。
※1.テーマ直下に作成することで、配布サイトをアップデートするだけで更新通知が届くようになるので管理が楽になります。
※2.配布サイトを別のテーマで運用している場合は、jsonファイルを任意の場所に作成する必要があります。
ファイルの中に記載するのはこちら。
- version:最新のテーマファイルのバージョン
- details_url:テーマ説明ページURL
- download_url:ファイルのダウンロードページURL
Download Managerを使ってテーマファイルを配布している場合
WordPressプラグイン「Download Manager」でテーマファイルを配布使っている場合は、開発モードにすることでURLを確認できます。
location.hrefの後のURLがそれです。
サンプルコード
{
"version": "20170924",
"details_url": "https://4536.jp/4536-download",
"download_url": "https://4536.jp/download/4536?wpdmdl=13775"
}
functions.phpにコード追加
後は、functions.phpにコードを追加して準備完了です。
(functions.php以外のファイルに追加するとエラーになるので、必ずfunctions.phpに追加してくださいね)
以下がサンプルコードです。
require 'plugin-update-checker-4.2/plugin-update-checker.php';
$myUpdateChecker = Puc_v4_Factory::buildUpdateChecker(
'https://4536.jp/wp-content/themes/4536/theme-update.json',
__FILE__,
'4536' //テーマ名
);
- Plugin Update Checkerのバージョン
- サイトURL
- テーマ名
はそれぞれ適宜変更してください。
更新通知が届く仕組み
動作確認の前に、更新通知がどうやって届くのか、その仕組みを解説します。
style.cssにテーマのバージョンを記述していると思いますが、そのバージョンよりもこのjsonファイルのバージョンの方が新しければ通知が届く…という仕組みです。
ですので、最新版の公開手順は以下のようになります。
- style.cssのバージョンを新しくする
- jsonファイルのバージョンをstyle.cssのバージョンと同じにする
- テーマファイルをアップロード(Download Managerなど)
- 配布サイトに新しいバージョンのテーマを適用する
※style.cssのバージョンを古いまま公開してしまうと、ずっと更新通知が届くようになってしまうのでご注意ください。
動作確認
では、動作確認をしてみましょう。
更新機能を実装したオリジナルテーマにアップデート後、配布サイトのテーマのバージョンがそれよりも新しくなれば更新通知が届きます。
更新に成功すれば、問題なく更新通知機能が実装されたことになります。
まとめ
管理画面でテーマを更新できないと、最新版の存在を知らずに古いバージョンを使い続けてしまう可能性があるので、更新機能の実装を強くおすすめします。
管理画面に自分が開発しているテーマの更新通知が届くとテンション上がりますよ!笑