同じ設定作業を、サイトを立ち上げるたびに手でやり直すのは面倒ですよね。
前回の記事 (XServer × SWELL 立ち上げ初日ログ) では、お問い合わせフォーム用プラグイン Contact Form 7 を WordPress の管理画面から手作業で設置しました。
1サイトならそれで十分です。
ただ、AI×副業を本気でやるなら最終的に WP サイトを 3〜4個並行で動かすことになります。
同じ UI クリックを毎回繰り返すのは、正直もったいないですよね。
そこでここでは、その全工程を Python スクリプト1本にまとめた話を紹介します。
実行は 1コマンド、所要数分で完了しますよ。
なぜ自動化するのか
お問い合わせフォーム設置は、地味に時間を食う作業なんです。
プラグイン検索・インストール・有効化、フォーム本体の編集 (メール送信先・本文テンプレート)、お問い合わせ固定ページの作成、メール送信テスト。
最低でも4工程あって、手作業で 20分かかりました。
このうちメール送信テスト以外は、すべて WP-CLI (WordPress をコマンド操作するツール) で自動化できます。
複数サイトに展開する前提なら、スクリプトを 1本書いておけば、残りのサイトは数分で同じ状態に揃います。
スクリプトがやっていること
やっていることは、ざっくり4ステップです。
- プラグインのインストールと有効化
- お問い合わせフォーム本体を新規作成
- フォームのメタ値 (送信先メール・本文テンプレート・バリデーションメッセージなど) を一括投入
- ショートコード入りの「お問い合わせ」固定ページを作成して公開
Contact Form 7 のフォーム定義は、すべて WordPress のデータベース内の wp_postmeta テーブル (投稿の付属情報を入れるテーブル) に格納されます。
送信先メールも、件名テンプレートも、22種類あるバリデーションメッセージも、全部このテーブルへの書き込みで済みます。
WP-CLI には JSON を直接投げ込めるオプションがあるので、Python から呼び出すときも JSON 形式で値を渡せば、難しい変換処理は要りません。
押さえておきたい要点 2つ
実装でつまずきやすい部分が、2つありました。
1つ目。
WP-CLI には標準入力から値を読む「-」というマーカーがありますが、これは JSON 渡しのオプションと併用できません。
素直に位置引数として直接渡すと動きます。
2つ目。
フォーム本体の HTML 風テンプレート (<label> で囲まれた改行入りのもの) は、JSON 経由ではなく プレーンテキストのまま渡す必要があります。
JSON 経由にすると改行が \n のリテラル文字列に化けて、フォーム表示が崩れるんです。
フォーム本体テンプレートとロケール設定だけプレーンテキストで渡し、その他のメタ値はすべて JSON で渡す、という使い分けですね。
スクリプトの主要部分
スクリプトの中心は次のような構造になっています (全文はリポジトリの scripts/setup_contact_form_7.py 参照)。
# 1. プラグイン install + activate
wp("plugin", "install", "contact-form-7", "--activate")
# 2. フォーム本体を作成 (post_id を取得)
form_id = int(wp("post", "create", "--post_type=wpcf7_contact_form",
f"--post_title={title}", "--post_status=publish", "--porcelain"))
# 3. メタ値を投入 (送信先メールなどは JSON で渡す)
wp("post", "meta", "update", str(form_id), "_mail",
json.dumps(mail_dict, ensure_ascii=False), "--format=json")
# 4. ショートコード入りの固定ページを作成
wp() は SSH 経由で wp コマンドを叩く薄いラッパーです。
XServer (今回採用したレンタルサーバー) は標準で SSH と WP-CLI が使えるので、追加のセットアップは要りません。
実行と検証
実行コマンドは1行です。
python scripts/setup_contact_form_7.py \
--recipient contact@ai-shacho.com
成功すると、生成された固定ページの URL が出力されます。
ブラウザで開いて、お問い合わせフォームが正しく表示されていれば OK。
最後にフォームから自分宛にテスト送信して、メールが届けば設置完了です。
前回の UI 手作業 20分が、数分まで短縮できました。
送信テスト以外は人間の手が要りません。
次のサイトに使い回すとき
2サイト目以降が、自動化の本当のうまみが出てくるところです。
スクリプトのトップに 2つの設定値があります。
SSH_HOST = "xserver-aishacho"
WP_PATH = "~/ai-shacho.com/public_html"
==新しいサイトでは ~/.ssh/config に新サイト用の Host を追加してから、この 2つを書き換えるだけで動きます。==
引数 --recipient でメール送信先も切り替えられます。
フォーム本体の文面 (氏名・メールアドレス・題名・メッセージ本文) や送信メールのテンプレート文をサイトごとに変えたい場合は、YAML 設定ファイルから読み込む形に拡張すると便利です。
サイト名と送信先のペアを並べておくだけで、全サイトに同じ仕様を一括投入できますよ。
まとめ
WP-CLI と Python の組み合わせは、Contact Form 7 のような「UI で 20分かかるが、裏側は単純なデータ更新」系の作業と相性が抜群なんです。
副業ブログを 1サイトだけ運営するなら、手作業で十分です。
でも AI×副業を本気でやって複数サイトに広げる前提なら、こうした立ち上げ作業の自動化は最初の投資として効いてきます。
一度書いてしまえば、後で立ち上げる事業がどれだけ増えても同じスクリプトで済みますよ。
サーバー選びの観点では、XServer (エックスサーバー
) は SSH と WP-CLI が標準で使えるので、こうした自動化と相性が良いレンタルサーバーです。
本気で稼ぐ前提なら、表示速度の速さも含めて選ぶ価値があります。
次に読むおすすめ
- XServer × SWELL でブログを立ち上げた初日ログ (2026年版)
- SWELL カスタマイズの WP-CLI Python 自動化 (準備中)
CTA
X 会社アカウントをフォロー: @ai_shacho_jp — AI×副業の実装ログを毎日投稿しています。
