仕事で更新を依頼されたサイトがWordPressマルチサイトだった。
だいぶ複雑に手を加えられた迷宮状態だったので構造を理解するのにも時間がかかったんだけど、開発環境を構築するのにもえらい時間がかかった。
シングルサイトのWordPressならファイルとデータベースをインポートして、ドメイン名を少し弄ればなんとかなる。ところが、マルチサイトはそうはいかなかった。元サイトがトップドメイン運用で、開発サーバーではサブディレクトリ運用だったのも混乱に拍車をかけた。
リダイレクトループに始まり、404エラーもあり、500番代のエラーもあり、もうたいへん。
Web の情報を元にあれこれ試したが決定打がないまま、二度クリーンインストールし直した。
動いた手順
クリーンインストールを繰り返しておぼろげにわかったのは、本番マルチサイトの設定をなんとか再現しようとしてデータベースを読み込むうちに、たぶんサーバー固有の設定を組み込んでしまっている、ということだ。
だから、できるだけ、開発サーバーの設定を残した方がいいに違いない、と推測した。
だから、大雑把にこんな手順でやってみた。メモを取っていなかったので細部間違っているかもしれない。
- 開発サーバー上にWordPressをクリーンインストール
- クリーンインストールしたWordPressをマルチサイト化するため、
Allow\_multi\_site
の設定をwp-config.php
に書き込み、再ログイン - 本番サーバーから子サイト関連テーブルだけをエクスポート
- PhpMyAdminで、子サイトの関連テーブルだけを削除し、子サイト関連テーブルだけインポート
一度途中で「注意: 既存の WordPress ネットワークを検出しました。」が表示された。どうやって対処したんだったか忘れたけど……。
手順など
あちこち参考になる記事はあるけれど、こちらの記事にリストがあるので参考に。
Moving Multisite to a New Domain (Without Errors!) - WPMU DEV
項目 | http | trailing slash | sample |
---|---|---|---|
wp\\\#options > siteurl | http必要(http://foobar.com/wp/hoge) | ||
wp\\\#options > home | http必要(http://foobar.com/wp/hoge) | ||
wp_blogs > domain | 不要 | 不要 | foobar.com |
wp_blogs > path | - | /必要 | /wp/ |
wp_options > siteurl | http必要 | 不要 | http://foobar.com/wp |
wp_options >home | http必要 | 不要 | http://foobar.com/wp |
wp_site > domain | 不要 | 不要 | http://foobar.com |
wp_site > path | - | /必要 | /wp/ |
wp_sitemeta > siteurl | 不要 | /必要 | foobar.com/wp/ |
wp_#_options > fileupload_url
という項目が私が見た範囲では存在しないんだけど、これは廃止されたってことなんだろうか?
wp_blogsのドメインとパス
これは罠だった。
どや!?あなたも躓くかもしれない「ワードプレスマルチサイトでのドメイン変更」の手順書 | デザインどや!?
上記ブログの「サブディレクトリにWordPressをインストールした場合」というところにあるのだけれど、サブディレクトリをサブドメインやドメイントップにする方法は割とあちこちに情報がある。
ところが、サブドメイントップにインストールされたWordPressをサブディレクトリのWordPressに移行する情報はあまりなくて、けっこう面倒なのだ。
私は結局諦めて、開発環境に一つサブドメインを切ることにした。この方がだいぶ早かった。
やはり開発環境は本番環境そっくりというのが理想だ。
参考記事
- WordPress の引越し - WordPress Codex 日本語版
- Moving Multisite to a New Domain (Without Errors!) - WPMU DEV
- WordPressのマルチブログ化 | 日記の間 | あかつきのお宿
- php - Wordpress: Move Multisite from server to localhost - Stack Overflow
- WordPress » WordPressサイトの移転方法(マルチサイトにも対応) | MORILOG
- Moving a WordPress Root Install to a Subdirectory Install and Vice Versa