2026年5月20日

2026年5月20日

WordPressテーマを安全に切り替える方法

はじめに

WordPressのテーマ切り替えは単純に見えますが、カスタマイズ・ウィジェット設定・ショートコード・テーマ固有機能の喪失リスクがあります。本番サイトで直接切り替える前に必ずバックアップとテストを行いましょう。

症状・原因

  • テーマを変更したらサイトが壊れた
  • 旧テーマのウィジェット設定が消えた
  • テーマ固有のショートコードが機能しなくなった
  • テーマ切り替え前に何をすべきかわからない

解決手順

ステップ1:切り替え前のチェックリスト

□ バックアップを取る(DB + ファイル)
□ 現在のテーマ設定をメモ・スクリーンショット:
  → カスタマイザーの設定
  → ウィジェットの配置
  → メニューの設定
  → テーマオプション(独自設定画面)

□ テーマ固有機能の確認:
  → ショートコードの使用箇所を確認
  → Page Builderの使用確認(Elementor等)
  → カスタム投稿タイプ(テーマ依存のもの)
  → テーマバンドルのプラグイン

□ 新テーマの確認:
  → PHPバージョン互換性
  → 必要プラグインの確認
  → レスポンシブ対応
  → ライセンス(GPL準拠か)

ステップ2:バックアップを取る

# データベースをバックアップ
wp db export --add-drop-table backup-before-theme-switch-$(date +%Y%m%d).sql

# テーマファイルをバックアップ
cp -r wp-content/themes/current-theme wp-content/themes/current-theme-backup-$(date +%Y%m%d)

# カスタマイザー設定をエクスポート
wp theme mod list --format=json > theme-mods-backup-$(date +%Y%m%d).json

# ウィジェット設定をエクスポート(option として保存されている)
wp option get sidebars_widgets --format=json > widgets-backup-$(date +%Y%m%d).json
wp option get widget_text --format=json >> widgets-backup-$(date +%Y%m%d).json

# メニュー情報をエクスポート
wp menu list --format=table

ステップ3:ステージング環境でテストする

# ステージング環境に本番DBをコピー
wp db export - | ssh staging-server "wp db import - --path=/var/www/staging"

# ステージング環境でテーマを切り替え
ssh staging-server "wp theme activate new-theme --path=/var/www/staging"

# ステージングで確認する項目:
# → トップページ・カテゴリー・記事詳細
# → お問い合わせフォーム
# → 検索機能
# → モバイル表示(スマートフォン)
# → ページ速度(GTmetrix等で計測)

ステップ4:WP-CLIでテーマを切り替える

# インストール済みテーマの一覧を確認
wp theme list --format=table

# 新しいテーマをインストール
wp theme install twentytwentyfive --activate

# または既存テーマに切り替え
wp theme activate new-theme-slug

# 現在アクティブなテーマを確認
wp theme list --status=active --format=table

# テーマの詳細情報を確認
wp theme get new-theme-slug --format=json

# テーマの更新確認
wp theme list --update=available --format=table

ステップ5:切り替え後の設定を引き継ぐ

# メニューの再設定
wp menu list --format=table
wp menu location assignment list --format=table

# メニューをロケーションに割り当て
wp menu location assignment add primary-menu primary
wp menu location assignment add footer-menu footer

# ウィジェットを再設定(GUIで行うのが確実)
# テキストウィジェットのみCLIで設定可能
wp widget add text sidebar-1 1 --title="サイドバータイトル" --text="テキスト内容"

# カスタマイザーの設定を確認・修正
wp theme mod list --format=table
wp theme mod set blogname "サイト名"
wp theme mod set blogdescription "サイトの説明"

ステップ6:テーマ固有ショートコードを移行する

# 旧テーマのショートコードを使用しているページを検索
wp db query "SELECT ID, post_title, post_content
  FROM wp_posts
  WHERE post_content LIKE '%[old_theme_shortcode%'
  AND post_status = 'publish'"

# ショートコードを新しい形式に一括置換
wp search-replace '[old_theme_shortcode' '[new_shortcode' \
  --all-tables --report-changed-only

# Elementor等のPage Builderを使っている場合
wp elementor flush-css 2>/dev/null || true

ステップ7:パフォーマンスと動作を確認する

# パーマリンクをリセット(テーマ変更後は必須)
wp rewrite flush --hard

# キャッシュをクリア
wp cache flush
wp transient delete --all

# テーマ切り替え後のサイトを確認
wp eval "echo home_url() . PHP_EOL;"
wp eval "echo get_template() . PHP_EOL;"  # 現在のテーマ
wp eval "echo get_stylesheet() . PHP_EOL;" # 子テーマならその名前

# 404ページを確認(リダイレクト設定が必要か)
wp post list --post_type=page --format=table | head -20

注意事項

  • Elementor・Divi・Beaver Builderなどのページビルダーを使っている場合、テーマ切り替えでデザインが大幅に崩れることがあります。事前に十分なテストが必要です
  • テーマに依存するカスタム投稿タイプがある場合、テーマ切り替えでそのコンテンツが消えて見える場合があります(DBには残っています)
  • 子テーマを使っていた場合、子テーマのカスタマイズは新テーマには引き継がれません

まとめ

テーマ切り替えは「バックアップ → ステージングでテスト → 本番切り替え → 設定引き継ぎ → パーマリンクリセット」の順で安全に進めます。wp theme activate でWP-CLIから切り替え、切り替え後は必ず wp rewrite flush --hard を実行してください。

お気軽にご相談ください

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