PHPMyAdmin（SQL）とFTPを使用したWordPressの引っ越し作業のまとめ

WordPress サイトの移行は、引っ越しを検討している多くのサイト運営者にとって重要な作業です。今回は、PHPMyAdmin と FTP を使ってWordPressサイトを移行する手順を詳しく解説します。

## 事前準備

移行作業を始める前に、以下の情報を整理しておきましょう：

**移行元（旧サーバー）の情報：**
- サイトURL
- データベース名
- データベースユーザー名・パスワード
- テーブルプレフィックス

**移行先（新サーバー）の情報：**
- サイトURL
- データベース名
- データベースユーザー名・パスワード
- テーブルプレフィックス

また、作業を始める前に必ず**バックアップ**を取っておきましょう。

## 1. データベースのエクスポートとインポート

### 移行元データベースのエクスポート手順

1. 移行元サーバーのPHPMyAdminにログインします
2. 左側のサイドバーから移行元のデータベースを選択します
3. 上部メニューから「エクスポート」を選択します
4. エクスポート方法は「クイック」または「カスタム」を選択（大抵は「クイック」で十分です）
5. SQLファイルをダウンロードします

### SQLファイルの編集

テキストエディタ（サクラエディタやVSCodeなど）でSQLファイルを開き、以下の置換を行います：

1. 旧サイトURLを新サイトURLに置換
   例：`https://old-domain.com` → `https://new-domain.com`

2. テーブルプレフィックスの置換（必要な場合）
   例：`wp_` → `irqv_`


#### テーブルプレフィックスを変更する理由
データベースごとに異なるテーブルプレフィックスを設定する主な理由は、セキュリティ対策です。これには以下のようなメリットがあります。

1. **自動化攻撃の防止**:
   多くの攻撃は「wp_」というデフォルトのプレフィックスを狙います。ランダムなプレフィックスを使用することで、一般的な攻撃スクリプトの効果を軽減できます。

2. **SQLインジェクション対策**:
   攻撃者がテーブル名を推測しにくくなるため、SQLインジェクション攻撃のリスクが低減します。

3. **マルチサイト環境の保護**:
   同じサーバー上に複数のWordPressサイトがある場合、各サイトが異なるプレフィックスを使用することで、1つのサイトが侵害されても他のサイトへの影響を最小限に抑えられます。


### 移行先データベースへのインポート

1. 移行先サーバーのPHPMyAdminにログインします
2. 左側のサイドバーから移行先のデータベースを選択します
3. 既存のテーブルがある場合は、必要に応じて削除します
4. 上部メニューから「インポート」を選択します
5. 「ファイルを選択」をクリックし、編集済みのSQLファイルを選択します
6. 「実行」をクリックしてインポートを開始します

## 2. ファイルの移行

### WordPress ファイルのダウンロード

**方法1: FTP経由（時間がかかる場合あり）**
1. FileZillaなどのFTPクライアントで移行元サーバーに接続します
2. WordPressがインストールされているディレクトリの内容をローカルPCにダウンロードします

**方法2: cPanelのファイルマネージャーを使用（推奨）**
1. cPanelにログインし、ファイルマネージャーを開きます
2. WordPressディレクトリを選択し、「圧縮」機能を使用してZIPファイルを作成します
3. 作成されたZIPファイルをダウンロードします（個別ファイルをダウンロードするより大幅に高速です）

### ファイル内のURLの置換（オプション）

大規模なサイトや複雑なテーマ・プラグインを使用している場合は、ファイル内にハードコードされたURLを置換するとよいでしょう：

1. ダウンロードしたファイルをテキストエディタで開きます
2. 検索・置換機能を使用して旧サイトURLを新サイトURLに置換します

### 新サーバーへのアップロード

1. FTPクライアントで移行先サーバーに接続します
2. 移行先のディレクトリに、ダウンロード・編集したファイルをアップロードします

## 3. 設定ファイルの編集

### wp-config.php の修正

移行先サーバーにアップロードした `wp-config.php` ファイルを開き、以下の情報を更新します：

```php
// データベース名
define('DB_NAME', '新サーバーのデータベース名');

// データベースユーザー
define('DB_USER', '新サーバーのデータベースユーザー名');

// データベースパスワード
define('DB_PASSWORD', '新サーバーのデータベースパスワード');

// テーブルプレフィックス
$table_prefix = '新サーバーのテーブルプレフィックス';
```

### .htaccess ファイルの確認・修正

`.htaccess` ファイルが移行先サーバーと互換性があるか確認します。問題がある場合は、最小限の設定で新たに作成することも検討します：

```
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
```

※ `RewriteBase` はサイトのパスに合わせて調整してください。サブディレクトリにインストールする場合は `/サブディレクトリ名/` のようになります。

## 4. データベース内のURL更新

移行後にURLを更新するために、PHPMyAdminのSQLタブで以下のクエリを実行します：

```sql
UPDATE [prefix]_options SET option_value = replace(option_value, 'https://old-domain.com', 'https://new-domain.com') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE [prefix]_posts SET guid = replace(guid, 'https://old-domain.com', 'https://new-domain.com');
UPDATE [prefix]_posts SET post_content = replace(post_content, 'https://old-domain.com', 'https://new-domain.com');
UPDATE [prefix]_postmeta SET meta_value = replace(meta_value, 'https://old-domain.com', 'https://new-domain.com');
```

※ `[prefix]` は実際のテーブルプレフィックスに置き換えてください。

## 5. 動作確認とトラブルシューティング

### 確認事項

1. トップページの表示
2. 内部リンクの動作
3. 画像やメディアファイルの表示
4. 管理画面へのアクセス
5. プラグイン・テーマの動作

### よくあるトラブルと解決法

1. **500エラーが発生する場合**
   - `.htaccess` ファイルの削除または最小限の設定に変更

2. **画像が表示されない場合**
   - メディアファイルのパスが正しいか確認
   - パーマリンク設定の更新

3. **管理画面にログインできない場合**
   - データベース内のユーザー情報の確認
   - Cookie設定の確認

## まとめ

WordPress サイトの移行は複雑に見えますが、手順を順に追っていけば問題なく完了できます。特に準備と事前計画が重要です。

移行作業の手順をまとめると：
1. データベースのエクスポートとインポート
2. ファイルの移行
3. 設定ファイルの編集
4. データベース内のURL更新
5. 動作確認とトラブルシューティング

サイト規模によっては移行に時間がかかることもありますが、慎重に作業を進めれば、ダウンタイムを最小限に抑えたサイト移行が可能です。