「WordPress公式プラグインディレクトリへのアップロード、毎回SVNを使うのが面倒くさい…」
「GitとSVN、二重管理になっていてミスが怖い…」
そんな悩み、GitHub Actions を使えば一発で解決します。
一度設定してしまえば、あとはGitHub上で「リリース」ボタンを押すだけ。裏側で自動的にSVNへのコミット作業を行ってくれます。
今回は、業界標準となっている 「10up/action-wordpress-plugin-deploy」 を使った、最も簡単で確実な設定手順を解説します。
必要なもの・準備
作業を始める前に、手元に以下があるか確認してください。
- GitHubアカウント(プラグインのソースコードがあること)
- WordPress.orgのアカウント(公式ディレクトリへのコミット権限があること)
- 掲載済みのプラグインURL(まだ審査に通っていない場合は、審査通過後に行ってください)
手順の全体像
やることは大きく分けて4ステップです。
- WordPress.org で「SVN用パスワード」を取得する
- GitHub にそのパスワードを登録する
- Gitリポジトリ上で必要な設定を行う
- GitHubでリリースを作成する
これだけで、次回からWordPress公式リポジトリへの更新が完全自動になります。
Step 1: WordPress.org で SVNパスワードを取得
公式ディレクトリへのログインには、現在セキュリティ強化のため、普段のログインパスワードとは別の「SVN専用パスワード」が必要です。というわけで、最初にこのSVNパスワードを取得していきます。
まずはWordPress.org のプロフィールページ にログインし、Account & Security タブを開きます。

Two-factor app(2要素認証)が設定されていることを確認してください(必須です)。設定されていない場合は先に設定を行なってください。
SVN credentials のセクションをクリックし、Generate New Password をクリックすると、SVNパスワードが生成・表示されます。
表示された長いパスワードは二度と表示されないので、忘れずにメモしてください。
Step 2: GitHub にパスワードを登録
GitHubのリポジトリに、先ほどのパスワードを安全に保存します。
GitHubのリポジトリを開き、Settings タブをクリック。左サイドバーの Secrets and variables > Actions を選択します。

New repository secret(緑のボタン)をクリックします。
以下の2つを順番に追加してください。
| Name (名前) | Secret (値) |
SVN_USERNAME | あなたのWordPress.orgのユーザー名 |
SVN_PASSWORD | Step 1で取得したSVN専用パスワード |
これで、GitHubがあなたの代わりにSVNにログインできるようになります。
Step 3: 除外リスト (.distignore) を作成
Gitには必要だけど、プラグインの利用ユーザーには不要なファイル(開発用データなど)を指定します。
リポジトリの一番上の階層(ルート)に、.distignore という名前でファイルを作成し、WordPressプラグインの公式リポジトリに不要なファイルを記述します。
これはサンプルです。ご自身の環境に合わせて作成してください。
.git
.github/
.gitignore
.distignore
node_modules/
src/
vendor/
composer.json
composer.lock
package.json
pnpm-lock.yaml
vite.config.js
eslint.config.js
prettier.config.js
stylelint.config.js
test/
tests/
Step 4: 自動化ワークフローを作成
最後に、「いつ、何をするか」を書いた指示書(YAMLファイル)を置きます。
リポジトリの中に .github/workflows/ というフォルダを作成します(フォルダの中にフォルダを作る)。
その中に deploy.yml というファイルを作成します。
中身に以下をコピペします。
name: Deploy to WordPress.org
on:
push:
tags:
- 'v*'
jobs:
tag:
name: New tag
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
with:
version: 8
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Build
run: pnpm run build
- name: WordPress Plugin Deploy
uses: 10up/action-wordpress-plugin-deploy@stable
with:
generate-assets: false
env:
SVN_USERNAME: ${{ secrets.SVN_USERNAME }}
SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }}
この例では pnpm を使っていますが、npm をお使いの場合はこんな感じ↓
name: Deploy to WordPress.org
on:
push:
tags:
- 'v*'
jobs:
tag:
name: New tag
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: WordPress Plugin Deploy
uses: 10up/action-wordpress-plugin-deploy@stable
with:
generate-assets: false
env:
SVN_USERNAME: ${{ secrets.SVN_USERNAME }}
SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }}
Step 5: アイコンやスクリーンショットを保存する
WordPressのプラグインページに表示されるアイコンやスクリーンショットなどは、本来 assets フォルダに入れていましたが、この構成では GitHubリポジトリのルートに .wordpress-org というフォルダを作り、そこにバナーやアイコンを入れておくだけでOKです。
自動デプロイ時に、賢いプログラムが勝手に画像を認識して、SVN側の正しい場所(assetsフォルダ)へアップロードしてくれます。
これで準備完了です!実際に新しいバージョンをリリースしてみましょう。
STEP 6: バージョン番号を更新する(超重要!)
必ず 以下の2箇所 のバージョン番号を揃えて、新しい数字(例: 1.0.1)に書き換えてください。
- メインのPHPファイル(
Version: 1.0.1) readme.txtのStable tag: 1.0.1
これらを書き換えたら、Gitにコミット&プッシュしてください。
STEP 7: GitHubでリリースを作成する
GitHubリポジトリのトップページ右側にある Releases > Create a new release をクリック。

Select tag から新しいバージョン番号(例: 1.0.1)を入力して「Create new tag」を選択。


タイトルや説明を書いて、Publish release をクリック

STEP 8: 自動デプロイを見守る
Actions タブを開くと、自動的に処理が始まっているのが見えます。

すべてが緑色のチェックマークになれば成功です。数分後にはWordPress公式ディレクトリに反映されています。

失敗した場合はタイトル部分をクリックするとどこでエラーが起こっているか確認することができます。修正して新しくリリースを作成しましょう。

落とし穴: distフォルダの罠
たとえばViteを使っている場合、デフォルトのビルド出力先はdist となっています。しかし、これがデプロイエラーの原因となる罠が潜んでいます。
今回のように「10up/action-wordpress-plugin-deploy 」を使う際、プロジェクトルートにdistというディレクトリが存在すると、デプロイが失敗することがあります。
これは、アクションが「dist があるなら、それがビルド成果物だ」と自動判定し、ルートディレクトリを無視して distの中身だけをデプロイしようとするため。 その結果、ルートにある必須ファイル (readme.txt やメイン PHP ファイル) が欠落し、SVNコミット時にエラーになります。
最もシンプルな解決法は、Viteのビルド出力先を build などに変更する方法です。
import { defineConfig } from 'vite';
export default defineConfig({
build: {
// 出力ディレクトリ
outDir: 'build',
},
});
おわりに
というわけで以上です。ちょっとの設定で、今後のWordPress公式リポジトリへのアップロードが飛躍的に楽になりますね。WordPressプラグイン開発をされていて、SVNに不便を感じていた方はぜひお試しください。