2026年5月23日

2026年5月23日

WordPressでステージング環境を構築する方法・本番反映の安全な手順

はじめに

「テーマの大幅変更を本番で直接試して壊してしまった」「プラグインのアップデートをテストする場所がない」——ステージング環境があれば、変更を安全にテストしてから本番に反映できます。

症状・原因

WordPressの変更(テーマ・プラグイン更新・大規模カスタマイズ)を直接本番に適用すると、表示崩れやサイトダウンのリスクがあります。ステージング(検証)環境を用意することで、本番への影響なしに事前テストができます。

解決手順

ステップ1:プラグインでステージングを作成する

【ホスティング提供のステージング機能(推奨)】

ConoHa WING:
  管理画面 → ステージング環境 → 作成
  → staging.example.com で自動構築

エックスサーバー:
  サーバーパネル → WordPress簡単移行
  または WP簡単ステージング(プラグイン)

SiteGround / Kinsta(海外サーバー):
  管理パネル → Staging → Create Staging Site

【プラグインでステージングを作成】
WP Stagecoach / WP Staging(無料):
  プラグイン → 新規追加 → "WP Staging" → インストール
  → Tools → WP Staging → Create new staging site
  → サブフォルダ(例: /staging/)にクローンが作成される

ステップ2:WP-CLIでステージングを手動構築する

# 本番サイトをステージング用にクローン
# 前提: ステージング用ドキュメントルートが /var/www/staging/ にある

# 1. 本番ファイルをコピー
rsync -avz --exclude='wp-content/cache/' \
    /var/www/html/ \
    /var/www/staging/

# 2. 本番DBをエクスポート
cd /var/www/html
wp db export /tmp/production.sql

# 3. ステージング用DBを作成してインポート
mysql -u root -p -e "CREATE DATABASE wordpress_staging;"
mysql -u root -p wordpress_staging < /tmp/production.sql

# 4. ステージング用のwp-config.phpを設定
cp /var/www/staging/wp-config.php /var/www/staging/wp-config.php.bak

# 5. WP-CLIでURLを置換
cd /var/www/staging
wp config set DB_NAME 'wordpress_staging'
wp config set DB_USER 'staging_user'
wp config set DB_PASSWORD 'staging_password'

# 6. URLを本番からステージングに置換
wp search-replace 'https://example.com' 'https://staging.example.com' --all-tables

# 7. ステージング環境であることを示す設定
wp config set WP_ENVIRONMENT_TYPE 'staging'

ステップ3:wp-config.phpで環境を分離する

// wp-config.php: 環境別設定の分離

// 環境タイプを設定(WordPress 5.5以降)
define( 'WP_ENVIRONMENT_TYPE', 'staging' ); // 'production' | 'staging' | 'development'

// 環境別の設定を切り替え
switch ( wp_get_environment_type() ) {
    case 'development':
        define( 'WP_DEBUG', true );
        define( 'WP_DEBUG_LOG', true );
        define( 'WP_DEBUG_DISPLAY', true );
        define( 'SAVEQUERIES', true );
        break;

    case 'staging':
        define( 'WP_DEBUG', true );
        define( 'WP_DEBUG_LOG', true );
        define( 'WP_DEBUG_DISPLAY', false ); // エラーを画面に出さない
        // ステージングで検索エンジンをブロック
        // (管理画面→設定→表示設定→検索エンジンをブロック にもチェック)
        break;

    case 'production':
    default:
        define( 'WP_DEBUG', false );
        define( 'WP_DEBUG_DISPLAY', false );
        break;
}
// ステージングで検索エンジンへのインデックスを禁止
add_action( 'wp_head', function() {
    if ( 'staging' === wp_get_environment_type() ) {
        echo '<meta name="robots" content="noindex, nofollow">' . "\n";
    }
} );

// ステージングで管理バーに環境表示
add_action( 'admin_bar_menu', function( $wp_admin_bar ) {
    $env = wp_get_environment_type();
    if ( 'production' !== $env ) {
        $wp_admin_bar->add_node( [
            'id'    => 'environment-indicator',
            'title' => strtoupper( $env ) . ' 環境',
            'meta'  => [ 'class' => 'environment-' . $env ],
        ] );
    }
}, 999 );

ステップ4:ステージングから本番への反映手順

# ステージングの変更を本番に反映する安全な手順

# 1. 本番のバックアップ(必須)
cd /var/www/html
wp db export backups/pre-deploy-$(date +%Y%m%d).sql
tar -czf backups/files-pre-deploy-$(date +%Y%m%d).tar.gz wp-content/

# 2. テーマ・プラグインファイルのみ同期
# (DBは基本的に同期しない — コンテンツが上書きされる)
rsync -avz --delete \
    --exclude='wp-config.php' \
    --exclude='wp-content/uploads/' \
    --exclude='wp-content/cache/' \
    /var/www/staging/wp-content/themes/ \
    /var/www/html/wp-content/themes/

rsync -avz --delete \
    --exclude='wp-config.php' \
    /var/www/staging/wp-content/plugins/ \
    /var/www/html/wp-content/plugins/

# 3. プラグインのアップデートを本番に適用
cd /var/www/html
wp plugin update --all
wp theme update --all

# 4. キャッシュをクリア
wp cache flush
wp rewrite flush

ステップ5:ローカル開発環境を使う(開発者向け)

# wp-env(@wordpress/env)でローカル環境を構築
npm install -g @wordpress/env

# プロジェクトディレクトリで起動
wp-env start
# → http://localhost:8888 でWordPressが起動
# → http://localhost:8889 でテスト環境

# .wp-env.json でカスタマイズ
{
  "core":    null,
  "plugins": [ "." ],
  "themes":  [ "./my-theme" ],
  "port":    8888,
  "phpVersion": "8.1",
  "config": {
    "WP_DEBUG":         true,
    "WP_ENVIRONMENT_TYPE": "development"
  }
}
# Local(localwp.com)でGUI環境を構築
# 1. localwp.comからLocalをダウンロード・インストール
# 2. 「+」ボタンで新しいサイトを作成
# 3. PHP・MySQL・Nginxのバージョンを選択
# 4. WordPressの管理者情報を入力して完了
# → ワンクリックでライブプレビュー共有も可能(Ngrok連携)

注意事項

  • ステージング環境では必ずnoindexメタタグまたはrobots.txtで検索エンジンのクロールをブロックしてください。インデックスされると本番と重複コンテンツになります。
  • ステージングから本番へDBを丸ごと同期するのは危険です。本番でのユーザーの投稿・注文・コメントが消えます。ファイル(テーマ・プラグイン)のみを同期し、DBの変更が必要な場合はマイグレーションスクリプトで対応してください。
  • ステージング環境のURLが外部に漏れないよう、Basic認証(.htpasswd)でアクセスを制限してください。

まとめ

ステージング環境は「ホスティングのステージング機能またはWP Stagingプラグインで構築→wp-config.phpでWP_ENVIRONMENT_TYPEを設定→noindexで検索エンジンをブロック→テスト後はファイルのみ本番に同期→本番反映前にバックアップ必須」の流れで運用します。関連記事:WordPressのデータベースを最適化する方法WordPressのマルチサイトネットワークを構築する方法

お気軽にご相談ください

お見積りへ お問い合わせへ