WordPress CLIにおけるデータ移行 & パーマリンク破損における対処
はじめに
こんにちは!サロンスタッフ予約サービス「minimo」でAI推進チームに所属している洗川です。
今回は、運用しているWordPressのブログ環境を新しいインフラへ移行した際に、WP-CLIを活用してデータ移行作業を行なった記録と、その際に発生した「パーマリンク破損」のトラブルシューティングを行った事例をご紹介します。
1. 実践:データ移行と修復
実際の移行フェーズを「エクスポート」「インポート」「トラブルシューティング」の3つに分け、それぞれの実践内容とTipsを紹介します。エクスポートはすでにWordPressが動いているケースが多いため標準のGUIを利用し、インポート以降はCLIで行うアプローチです。
Phase 1: データのエクスポート(GUI)
エクスポートに関しては、WordPressの標準機能を利用するのが最も確実で手軽です。
-
全コンテンツのエクスポート
移行元サイトの管理画面から ツール > エクスポート(/wp-admin/export.php)を開きます。
「すべてのコンテンツ」を選択してエクスポート実行ボタンを押し、XMLファイルをダウンロードします。
Phase 2: データのインポート(CLI)
ダウンロードしたXMLファイルを移行先のサーバーに配置し、WP-CLIを使ってデータをインポートします。移行先ではGUIの用意ができていないケースや、タイムアウトを考慮してCLIを利用します。
-
インポーターのインストールと有効化
まずはデータをインポートするための公式プラグインをCLIから導入します。$ wp plugin install wordpress-importer --activate --allow-root -
インポートの実行
配置したXMLファイルを指定してインポートを開始します。$ wp import WordPress.xml --authors=create --allow-root
💡 Tips
-
--authors=createオプションを付与することで、移行元に存在したユーザー(著者)情報が移行先に存在しない場合、自動で新規ユーザーとして作成・割り当ててくれます。 - データ量が非常に大きくインポートに長時間を要する場合は、SSH接続が途切れても処理が継続するように
tmuxやscreenなどのコマンドを活用することをおすすめします。
Phase 3: パーマリンク構造の修復(CLI)
データのインポートが完了しトップページは表示されても、下層の記事URLを開くと「404 Not Found」になったり、意図せぬURL構造になっているケースがありました。
これはインポートによってWordPress内部の「リライトルール(URLの解釈ルール)」に不整合が起きている状態です。CLIから設定の確認と修復を行います。
# 1. 現在のサイトURLが正しく設定されているか確認(念のため)
$ wp option get siteurl
# 2. パーマリンク設定を「投稿名」構造に強制アップデート(※要確認)
$ wp option update permalink_structure '/%postname%/'
# 3. リライトルールを再構築
$ wp rewrite flush --hard
💡 Tips(2行目のコマンドの取り扱いについて)
-
そのまま実行して良いケース: 「移行を機に、URLの構造を『投稿名(
/%postname%/)』に統一・リセットしたい・元の構造がそれだった」という場合は、上記の3ステップを順番に実行します。 -
⚠️ 構造を変えずに直したいケース: 元のサイトが別の構造(例:
/%category%/%postname%/など)だった場合、2行目のコマンドを実行すると過去のURLがすべてリンク切れになります。
「元のURL構造を維持したまま404エラーだけを直したい」場合は、2行目はスキップし、wp rewrite flush --hardのみを実行してください。このリライトルールの再構築で404エラーが解消する可能性があります。
まとめ
WordPressのデータ移行において、エクスポートは標準のGUIを利用しつつ、インポート作業やトラブルシューティングにWP-CLIを活用する事例を紹介しました。
WordPressの移行作業の際に、参考になれば幸いです。
最後までお読みいただきありがとうございました。
最後に
minimoでは、サービス開発やインフラ環境の改善に一緒に挑戦してくれる仲間を募集しています!ご興味のある方は、ぜひ採用ページをご覧ください。
Discussion