公式サイトに登録していない自作の WordPress テーマやプラグインを公開したり販売したりした場合にアップデートをどうするかが悩みどころです
Zipファイルをダウンロードしてもらって更新するっていうのが定番ですが、なかには更新通知機能を付けて対応しているものもあります
通知&更新機能の主なものとしては、 plugin-update-checker が利用されることが多いようです
これらの方法で通知&更新に対応してもよいのですが、 テーマやプラグインを有償で販売している場合は、単純に更新させるのではなくて、新しいバージョンが公開されたと言うお知らせのみ伝えたいとか、あるいは更新にパスワードを入力させたいとかいうことがあるかもしれません
そこで有料のテーマやプラグインの更新にも使えるようにお知らせ表示&更新用のプラグインを作成してみました
tap-inforest プラグイン(サーバー側)
この奇妙な名前は thema and plugin Infomation by rest api を略したもので、初めは テーマやプラグインの情報を REST API を使ってダッシュボードへお知らせ表示してみようというところからスタートして、パスワード付きの更新機能まで入れました
主な使い方としては以下のようなケースを想定しています
- ダッシュボードにテーマ/プラグインのお知らせを表示
- 詳細情報へのボタンを表示(任意)
- テーマ/プラグインの更新ボタン表示(任意)
- テーマ/プラグイン更新用のパスワード入力(Simple Download with password プラグインのダウンロードURL)
動作環境は WordPress 6.2、PHPバージョン 7.4 以上となっています(最新版推奨)
ダウンロード
セルティスラボの Simple Download with password アドオン 購入時に送られたメール内に記載されているパスワードを入力するとダウンロード出来ます
インストール
ダウンロードした tap-inforest-xxxx.zipファイルを WordPress 管理画面のプラグイン新規追加画面を開き、アップロードからファイルを選択してインストールして下さい
インストールしたら管理画面から有効化すれば使用することが出来ます
この tap-inforest プラグインを可動させるあなたのサイトが rest api リクエストを処理するサーバー側となり、そこでテーマ/プラグインのお知らせや更新用Zipファイルを登録管理します
登録
WordPress 管理画面の設定に「テーマ/プラグインお知らせ&更新マネージャー」という設定が追加されているのでそこで各種情報の登録管理を行います
タイプ | プラグインかテーマを選択してください |
スラッグ | 対象スラッグ( インストールされているプラグインやテーマのフォルダー名称 )を入力してください。 |
バージョン | プラグインやテーマのバージョン ※通常は最新バージョンを設定します。例えば 1.5.0 と設定されれば、リクエスト側のバージョン情報が 1.5.0 未満の場合のみメッセージの返信対象として扱われます |
WordPressバージョン | プラグインやテーマの動作に必要な WordPress の最小バージョンを設定します。例えば 6.4.0 と設定されれば WordPress のバージョンが 6.4.0 以上のサイトのみが対象となります(任意) |
PHPバージョン | プラグインやテーマの動作に必要な PHP の最小バージョンを設定します。例えば 8.0 と設定されれば PHP のバージョンが 8.0 以上のサイトのみが対象となります(任意) |
メッセージ種別 | Info(青) / Success(緑) / Notice(黃) / Alert(赤) から選択してください |
タイトル | ダッシュボードに表示されるお知らせのタイトルを入力してください |
メッセージ | お知らせの概要メッセージを入力してください |
詳細ページURL | 詳細説明を行っているページがあれば、そのページのURLを入力してください(任意) |
表示開始日 | お知らせ表示を開始する日付を指定(任意) |
表示終了日 | お知らせ表示を終了する日付を指定(任意) |
パッケージのURL | プラグインやテーマの更新用パッケージ(Simple Download with password プラグインで作成したダウンロードURL)を入力してください(任意) |
登録するとその画面上部に登録済みの一覧リストが表示されます
rest api リクエストを処理するサーバー側の設定は以上です
但し、これだけではこのプラグインは機能しません。配布する各プラグインやテーマにこの登録されているデータに問い合わせるための機能を実装する必要があります
プラグイン/テーマ側の問い合わせ機能実装
開発しているテーマやプラグインに問い合わせ用の機能を追加する必要があります
例えば sample-theme というテーマを管理するには以下のような作業が必要となります
1.tap-inforest プラグイン内にある dashboard-inforest.php ファイルを開発しているテーマのディレクトリへコピーします
2.コピーしたテーマ内の dashboard-inforest.php ファイルの namespace 部分の定義をテーマやプラグイン別のユニークな名前に書き換えます
namespace により複数のプラグイン等でこの機能を使った場合のクラス名の衝突を回避できます
namespace には任意の名前が使用できますが、テーマやプラグインのスラッグ等を推奨します。
但し、ハイフォン(-)は使用できないので使っている場合はアンダーバー(_)へ置き換えが必要です
3.テーマの function.php 等に rest api のリクエスト先サイト名(ここでは例として example.com としていますが、あなたのサイトを指定する必要があります ) : http://example.com, タイプ: theme, スラッグ(テーマのフォルダー名): sample-theme を下記のようなコードで記述します
if(is_admin()){ require_once( __DIR__ . '/dashboard-inforest.php'); //Dashboard_info の前に namespaceで定義した sample_theme を指定して実行します new sample_theme\Dashboard_info( 'https://example.com', 'theme', 'sample-theme' ); }
プラグインの場合はプラグインのメイン phpファイルへ同様なコードを タイプ: plugin, スラッグはプラグインのフォルダー名で指定します
必要なテーマやプラグイン側の変更は、namespaceを修正した dashboard-inforest.php ファイルの追加と管理モード時に問い合わせを行うための数行のコードの追加だけです
これでテーマやプラグインが有効化されていれば、お知らせや更新情報を定期的にチェックします。利用可能な新しいバージョンのお知らせや更新情報が確認出来たら、必要に応じて下記のようにユーザーに更新通知を表示します
WordPress標準のテーマやプラグインの更新チェックは通常1日2回程度ですが、dashboard-inforest.php でのリクエスト間隔はデフォルトで6時間にしています、メッセージが表示/更新されるまで6時間程度かかる場合があります
※時間間隔を短くするとサーバー側へのアクセスが増えて負荷がかかるので、配布しているテーマやプラグインのインストール数が多い場合はさらに長めに適時調整してください
免責事項
本ソフトウェアを使用した事による、いかなる損害も作者は一切の責任を負いません
更新履歴
Ver0.6.0
* 2024-3-4 公開