[WordPress]GitHub Releasesから自作プラグインを自動アップデート(Plugin Update Checker編)

TIPS

WordPressの公式ディレクトリに登録していない自作プラグイン(野良プラグイン)でも、公式プラグインと同じように 管理画面に「新バージョンがあります」と通知を出し、ワンクリックで自動更新 させたい場面は多いはずです。

今回は、業界標準の軽量ライブラリ Plugin-Update-Checker (PUC)GitHub Releases を組み合わせて、最短ステップで自動更新基盤を構築する方法をステップバイステップで解説します。

仕組みの概要

[開発者] 
  └─ バージョンを上げて GitHub Release を作成(例: v1.1.0)
        ↓
[利用者の WordPress]
  └─ PUC が定期的に GitHub API をチェック
        ↓
  └─ 「新しいバージョンが利用可能です」とダッシュボードに通知
        ↓
  └─ 「今すぐ更新」をクリックすると GitHub から zip を取得して自動展開

サーバー側に更新チェック用の専用APIやJSONファイルを用意する必要はなく、GitHubのリポジトリ設定と数行のPHPコードを追加するだけで完結します。

Step 1. プラグイン内に PUC ライブラリを導入する

まずはプラグインのディレクトリ内に plugin-update-checker を配置します。

対象プラグインのルートディレクトリで以下のコマンドを実行し、ライブラリを取得します(Git Submodule や通常ダウンロードでの配置でも構いません)。

# 例: my-custom-plugin ディレクトリへ移動
cd wp-content/plugins/my-custom-plugin

# puc ディレクトリとしてクローン
git clone https://github.com/YahnisElsts/plugin-update-checker.git puc

ディレクトリ構成は以下のようになります。

my-custom-plugin/
├── my-custom-plugin.php
├── puc/                        <-- 追加したライブラリ
│   ├── plugin-update-checker.php
│   └── ...
└── README.md

Step 2. メインファイルに更新チェッカーを組み込む

プラグインのメインPHPファイル(例: my-custom-plugin.php)の先頭付近に、以下の初期化コードを追記します。

<?php
/**
 * Plugin Name: My Custom Plugin
 * Plugin URI:  https://example.com/my-custom-plugin
 * Description: GitHub経由で自動アップデートが可能なデモ用プラグインです。
 * Version:     1.0.0
 * Author:      Your Name
 * License:     GPL-2.0+
 */

if (!defined('ABSPATH')) {
    exit;
}

// -----------------------------------------------------------------------------
// Plugin Update Checker の初期化
// -----------------------------------------------------------------------------
require_once plugin_dir_path(__FILE__) . 'puc/plugin-update-checker.php';
use YahnisElsts\PluginUpdateChecker\v5\PucFactory;

$myUpdateChecker = PucFactory::buildUpdateChecker(
    'https://github.com/YOUR_GITHUB_USERNAME/my-custom-plugin/', // あなたのGitHubリポジトリURL
    __FILE__,
    'my-custom-plugin' // プラグインのスラッグ(ディレクトリ名)
);

// GitHub Releases を更新ソースとして指定
$myUpdateChecker->getVcsApi()->enableReleaseAssets();

// ※ 非公開(プライベート)リポジトリで運用する場合はアクセストークンを設定(公開リポジトリなら不要)
// $myUpdateChecker->setAuthentication('your_github_personal_access_token');

実装のポイント

  • enableReleaseAssets(): GitHubのリリース(Releases)に添付された zip アセットを優先してダウンロードするように指定します。
  • プライベートリポジトリ対応: 社内専用プラグインや非公開リポジトリの場合は、setAuthentication() に読み取り権限(Personal Access Token)を渡すだけで更新通知・ダウンロードが可能になります。

Step 3. GitHub Releases でバージョンを配信する

機能追加やバグ修正を行い、新しいバージョンを配信する際の流れです。

1. バージョン番号の更新

プラグインのメインファイルヘッダーに記載された Version を書き換えてコミット・プッシュします。

 * Version:     1.1.0

2. GitHub上でリリースの作成

  1. GitHubのリポジトリページを開き、右側メニューの 「Releases」 > 「Draft a new release」 をクリックします。
  2. Choose a tag: v1.1.0(または 1.1.0)と入力して新規作成します。
  3. Release title: v1.1.0
  4. Description: 更新内容(Changelog)を記述します(このテキストがWordPress管理画面の「詳細を表示」モーダルに反映されます)。
  5. Publish release をクリックします。

Step 4. 動作確認と更新テスト

WordPressは通常12時間ごとに更新チェックを行いますが、管理画面から即座にテストできます。

  1. テスト環境のプラグイン内ヘッダーの Version を一時的に 0.9.0 などの古い数値に書き換えます。
  2. WordPress管理画面の 「ダッシュボード」 > 「更新」 を開きます。
  3. 「もう一度確認する」 ボタンをクリックしてキャッシュを更新します。
  4. 「プラグイン」一覧 を開くと、対象プラグインに更新通知が表示されます。

My Custom Plugin の新バージョン 1.1.0 が利用可能です。 [詳細を表示] または [今すぐ更新]

  1. 「今すぐ更新」 をクリックし、エラーなく最新版へアップデートされれば完了です。

トラブルシューティング & ベストプラクティス

  • 更新後にプラグインのディレクトリ名が変わってしまう場合
    • GitHubが自動生成するソースコードzipを使用すると、展開時にディレクトリ名が my-custom-plugin-1.1.0/ のようになってしまうことがあります。
    • これを防ぐには、ルートディレクトリ名が my-custom-plugin/ で保持されたzipファイルを自前(またはGitHub Actions)で作成し、Releaseの添付ファイル(Asset)としてアップロードしておくのが確実です。
  • 更新通知が表示されない場合
    • 対象プラグインが「有効化」されているか確認してください。
    • GitHubのリポジトリURLが正しいか、リリースが「Draft(下書き)」のままになっていないか確認してください。

まとめ

plugin-update-checker を導入することで、自前でアップデート用サーバーや複雑なエンドポイントを用意することなく、普段のGit運用(タグを切ってReleaseを作成)に乗せるだけで安全かつ迅速にプラグイン更新を配信できるようになります。

コメント

タイトルとURLをコピーしました