STEP 3 — WordPress CI/CD / 3-6

WordPressを、
pushで自動公開。

すでに動いている WordPress サイトのテーマやプラグインを、Claude Code で直したあと、毎回 FTP ソフトで手作業アップロード——その手間を、丸ごと自動化します。GitHub に push するだけで、変更したファイルが自動でサーバーへ送られる。少し応用的ですが、一度組んでしまえばあとが本当にラクです。前章の 公開(デプロイ)git・GitHubの知識を土台に進めましょう。

この章のゴール

  • なぜ FTPの手作業アップロードを自動化したいのか、自分の言葉で説明できる
  • GitHub Actions が、push をきっかけに自動で動く仕組みだとわかる
  • 自作テーマ/プラグインを、push するだけで FTP 経由で自動公開できる
  • FTPの接続情報を GitHub Secrets に安全にしまえる

なぜ、FTPの手作業をやめたいのか

レンタルサーバーで動かしている WordPress サイト。テーマやプラグインのファイルを直したら、これまでは FTP ソフト(FileZilla など)を開いて、サーバーにつないで、変えたファイルを手でドラッグして上書き——としていたはずです。これ、地味に大変ですよね。「どれを直したか忘れる」「古いファイルで上書きしてしまう」「複数ページ直すと抜け漏れる」。事故のもとです。

そこで、この作業を機械に任せます。GitHub に push したら、変更があったファイルだけを、自動で FTP でサーバーに送る。あなたがやることは「直す → コミット → push」だけ。前章で学んだ Vercel などの自動公開を、WordPress + 既存のレンタルサーバーでも実現する——それがこの章です。

となりに座って一言

「うちのサーバーは普通のレンタルサーバーだから、自動公開なんて無理でしょう?」——いいえ、できます。FTP が使えるサーバーなら、たいてい対応できます。すでにある WordPress 環境はそのままに、公開の“手作業”だけを自動に置き換えるイメージです。

全体の流れ — 何と何をつなぐのか

登場人物は3つです。① あなたの手元(Claude Code で編集)→ ② GitHub(コードの倉庫)→ ③ レンタルサーバー(WordPress 本番)。この ②→③ の橋渡しを、GitHub Actions という自動実行係に任せます。

  1. 手元で、自作テーマ/プラグインのファイルを Claude Code で直す。
  2. いつものように コミット → push で GitHub に送る。
  3. push をきっかけに GitHub Actions が自動で起動する。
  4. GitHub Actions が、変更ファイルを FTP でサーバーの所定の場所へアップロードする。
  5. 本番の WordPress サイトに、数十秒〜数分で反映される。

となりに座って一言

GitHub Actions は、GitHub に最初から備わっている「自動作業ロボット」です。「push されたら、この手順を実行してね」と命令書(設定ファイル)を一度置いておくだけ。あとは push のたびに、文句も言わず黙々とアップロードしてくれます。これが前章で出てきた CI/CD の正体です。

転送するのは「自分で書いたファイル」だけ

WordPress には膨大なファイルがありますが、自動で送るのは、自分で開発しているテーマやプラグインだけに絞ります。具体的には、サーバーの wp-content/themes/あなたのテーマ名/wp-content/plugins/あなたのプラグイン名/ の中身です。

WordPress 本体(wp-admin など)や、管理画面から入れた他社製プラグイン、アップロード済みの画像(wp-content/uploads)は転送対象に含めません。本体を上書きすると更新と衝突して壊れますし、画像を巻き込むと事故になります。「自分が書いたコードだけを、自分が書いた場所にだけ送る」——これが安全運用の基本です。

独学だと、ここで止まる

WordPress一式を丸ごと転送してしまう

「全部アップすれば確実」と考えて wp-content の外まで送ると、WordPress 本体や他社プラグインを古いファイルで上書きし、サイトが真っ白に——という事故が起きます。送るのは自作テーマ/プラグインのフォルダだけ。どこまでを対象にすべきか迷ったら、フォルダ構成を見せて Claude に相談しましょう。「このリポジトリのうち、FTPで送るべきは自作テーマだけにしたい。対象フォルダを判断して」と頼めば安全です。

準備するもの

設定を始める前に、手元に次の情報をそろえておきます。レンタルサーバーの管理画面(コントロールパネル)に載っているはずです。

  1. FTPホスト名(例:ftp.example.com または sv1234.xserver.jp のような文字列)
  2. FTPユーザー名
  3. FTPパスワード
  4. アップロード先のパス(例:/home/ユーザー/example.com/public_html/wp-content/themes/あなたのテーマ名/)
  5. GitHub にプロジェクトのリポジトリがあること(前章までで作成済み)

となりに座って一言

サーバーによっては、通常のFTPより安全な FTPS(暗号化されたFTP)が使えます。可能なら FTPS を選ぶのがおすすめ。どれが使えるかは、サーバーの「FTP設定」やマニュアルに書いてあります。分からなければ、サーバー名を添えて Claude に「このサーバーで使えるFTPの種類と、ホスト名の調べ方を教えて」と聞けば案内してくれます。

① 接続情報を GitHub Secrets にしまう

FTPのパスワードを設定ファイルに直接書いて GitHub に上げるのは厳禁です。前のフォームの章でも触れた通り、合鍵を公開リポジトリに置くようなもの。そこで、GitHub の Secrets(シークレット)という金庫に、暗号化して保管します。

  1. GitHub で、対象リポジトリの「Settings」を開きます。
  2. 左メニューの「Secrets and variables → Actions」を開きます。
  3. New repository secret」から、次の4つを1つずつ登録します。
登録する Secrets(名前 と 値)
FTP_SERVER     ← FTPホスト名(例: ftp.example.com)
FTP_USERNAME   ← FTPユーザー名
FTP_PASSWORD   ← FTPパスワード
FTP_SERVER_DIR ← アップロード先のパス(例: /public_html/wp-content/themes/mytheme/)

こうしておけば、設定ファイルには ${{ secrets.FTP_PASSWORD }} のように「金庫から取り出す」書き方ができ、パスワードそのものはコードに現れません。

② 自動アップロードの命令書を置く

次に、GitHub Actions への命令書(ワークフローと呼びます)を用意します。場所は決まっていて、プロジェクト内の .github/workflows/ というフォルダの中に、deploy.yml という名前で置きます。中身はこのようになります。

.github/workflows/deploy.yml
name: Deploy theme via FTP

on:
  push:
    branches:
      - main

jobs:
  ftp-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: FTP Deploy
        uses: SamKirkland/FTP-Deploy-Action@v4.3.5
        with:
          server: ${{ secrets.FTP_SERVER }}
          username: ${{ secrets.FTP_USERNAME }}
          password: ${{ secrets.FTP_PASSWORD }}
          protocol: ftps
          server-dir: ${{ secrets.FTP_SERVER_DIR }}
          local-dir: ./wp-content/themes/mytheme/

ざっくり読むと——「main ブランチに push されたら(on: push)、Ubuntu の作業machineを用意して(runs-on)、ファイルを取り出し(Checkout)、手元の local-dir のファイルを、サーバーの server-dir へ FTP で送る」という命令書です。local-dir を自作テーマのフォルダに、server-dir をサーバー側の置き場所に合わせれば、対象を「自分のファイルだけ」に絞れます。

となりに座って一言

この命令書、手で全部書く必要はありません。Claude Code に丸ごと作ってもらうのが正解です。あなたのフォルダ構成とサーバーのパスを伝えれば、local-dir / server-dir まで埋めた状態で用意してくれます。「.yml」という見慣れない形式に身構えなくて大丈夫。中身の意味だけ、なんとなく分かっていれば十分です。

実際には、次のように頼むのがいちばん早くて確実です。

Claude Code へのプロンプト
このプロジェクトの自作テーマ(wp-content/themes/mytheme/)を、mainブランチにpushしたらFTPで本番サーバーに自動アップロードするGitHub Actionsのワークフローを作ってください。
・接続情報はGitHub Secrets(FTP_SERVER / FTP_USERNAME / FTP_PASSWORD / FTP_SERVER_DIR)から読むこと
・送るのは自作テーマのフォルダだけ。WordPress本体やuploadsは送らないこと
・可能ならFTPSを使うこと
.github/workflows/deploy.yml として作成し、各設定の意味も初心者向けに説明してください。

③ 送らないものを決めておく

テーマフォルダの中にも、サーバーに送りたくないものがあります。たとえば作業用のメモ、node_modules(部品の山)、.git の管理情報など。これらを除外するため、.ftp-deploy-ignore や除外設定をワークフローに加えます。これも「これは送らないでほしい」と Claude に伝えれば、まとめて設定してくれます。

Claude Code へのプロンプト
FTPアップロードの対象から、node_modules・.git・作業用メモ(*.md)・キャッシュファイルなどを除外したいです。除外設定を追加してください。

④ push して、自動で動くのを見届ける

準備ができたら、いつものコミット&push です。ワークフローのファイル自体も push して登録します。

ターミナルに入力
git add .
git commit -m "FTP自動デプロイのワークフローを追加"
git push

push したら、GitHub のリポジトリページで「Actions」タブを開いてみましょう。いま走っている自動作業が一覧に出ています。クリックすると、アップロードの進み具合がリアルタイムで見られます。緑のチェックがついたら成功。本番サイトを開いて、変更が反映されているか確かめてください。これ以降は、テーマを直して push するだけで、毎回自動でサーバーに反映されます。

となりに座って一言

「Actions」タブは、自動作業の監視カメラです。うまくいったか、どこで止まったかが全部ここに残ります。失敗しても怖がらず、赤くなった行をクリックしてエラー文を開き、それをそのまま Claude に貼って「これはどういう意味?どう直す?」。この章は応用編ですが、困ったときの対処法はこれまでと同じです。

独学だと、ここで止まる

Actionsは緑なのに、サイトに反映されない

アップロード自体は成功しているのに変化が見えないときは、たいてい server-dir のパスが、実際の置き場所とずれているのが原因です。本来 themes/mytheme に送るべきものが、一つ上の階層に届いている、など。サーバーのFTP画面で実際のフォルダ構成を確認し、パス(FTP_SERVER_DIR)を直しましょう。もう一つ多いのは ブラウザのキャッシュ。強制リロード(Mac: ⌘+Shift+R)も試してください。パスの当たりが付かないときは、サーバーのディレクトリ構成を Claude に見せて相談を。

独学だと、ここで止まる

FTP接続でエラーになる(認証・タイムアウト)

「530 Login authentication failed」ならユーザー名・パスワードの Secrets を見直し。接続が切れる・固まる場合は、protocol(ftp / ftps)の指定がサーバーと合っていない、またはポート番号が違うことが多いです。サーバーのマニュアルでFTPの種類とポートを確認し、ワークフローの設定をそろえます。エラー文をそのまま Claude に渡せば、原因の切り分けを手伝ってくれます。

この章で出てきた言葉

FTP / FTPS
ファイルをサーバーに送るための仕組み。FTPS は通信を暗号化した安全版。使えるならFTPSを選びます。
GitHub Actions
GitHub に備わった自動作業ロボット。push などをきっかけに、決めた手順を自動で実行します。
ワークフロー
GitHub Actions への命令書。.github/workflows/ に .yml ファイルとして置きます。
GitHub Secrets
パスワードなど秘密の値を暗号化して保管する金庫。設定ファイルには名前で呼び出し、値は隠せます。
wp-content
WordPress の中で、テーマ・プラグイン・画像など「自分で足したもの」が入るフォルダ。
local-dir / server-dir
送り元(手元のフォルダ)と送り先(サーバーのフォルダ)。ここを正しく合わせるのが肝心です。

この章のまとめ

  • FTPの手作業アップロードを、push するだけの自動化に置き換えられる
  • 仕組みは push → GitHub Actions → FTPでサーバーへ転送
  • 送るのは自作テーマ/プラグインだけ。本体・uploads は対象外で安全に
  • 接続情報は GitHub Secrets へ。ワークフローは Claude に作ってもらうのが確実

Support

自動化で、つまずいたら。

FTPのパスやSecretsの設定は、画面を一緒に見れば一気に解決することがほとんどです。応用編こそ、対面で手を動かしながらが近道。受講中の方は、次回いっしょに組みましょう。

電話で相談 080-6946-4006