既存サイトをサブディレクトリ形式のマルチサイトにしてバイリンガルサイトを実現
ウサヲです。
これほんと参りました。成功したからこれを書いているものの、マルチサイトにするのにサブドメインを使ってみたりプラグインを利用してみたり色々試行錯誤を繰り返したのですが、サブディレクトリを使うことでようやく決着がついた、といったところです。
苦労したので、メモります。
ウサヲがやりたいことはこうだ!
本番ですでに稼働しているサイトとまったく同じサイトがローカルにも存在しているのです。
そのローカルの既存サイトをサブディレクトリ形式でマルチサイトにし、日英バイリンガルサイトを実現します。
そして、ローカルでの稼働を確認したら、本番にアップロードします。
手順
1 データのダウンロード
ローカルの既存サイトのデータをwordpress importerか何かでダウンロードしておきます
2 全てのプラグインの無効化
猫も杓子も無効化します。そうでなければマルチサイト許してくれないwordpressであります。
3 wp-config.phpに追記
以下のソースコードを、wp-config.phpの「/* That’s all, stop editing! Happy blogging. */」の上にペッ。
/* multisite setting */ define('WP_ALLOW_MULTISITE', true);
これはwordpressをマルチサイトにするかしないか、という定義で、「する」と宣言しています。
アァソウソウ、イイワスレテイタ。ウサヲはこのサイトを事情があって最初から英語版wordpressを導入しておるので、いちいちのセッティングの名前が英語です。まるで英語得意みたいだウサヲ。本当はどうなのだウサヲ。
4 マルチサイト化への入り口を確認し、もう一個のサイトの初期設定をする
dashboard>tool>に Network setting が追加されていることを確認し、ホッとします。
そしてそいつをクリックすると、「Create a Network of WordPress Sites」というページが表示されます。
マルチサイトにするにはこの画面で「サブドメイン」かはたまた「サブディレクトリ」かを選択するラジオボタンのあるページに出るのが通常です。
しかし、DBのデータが1ヶ月前からすでにあるという老婆のような既存サイトの場合、「サブドメイン」しか選択できない状態になっている!どうするウサヲ?目的は「サブディレクトリ」なのだ・・。
5 悩む
6 仕方がないからここではサブドメインで妥協し、後で状況をひっくり返す手段を選ぶ。
「サブドメインをインストールする」でクリック。ウサヲの目的とは裏腹です。
すると、次の画面でwp-config.phpと.htaccessを一部このように書き換えてください、とコードが表示されるので、それをそれぞれのファイルの該当箇所にそのままコピペしつつ、反逆者ウサヲは1箇所だけ文言を変更するのです。
○wp-config.phpの編集の一部分
define('SUBDOMAIN_INSTALL', true); //最初はこうなっていたのだが ↓ define('SUBDOMAIN_INSTALL', false); //サブドメインを真っ向から否定
○.htaccess
は、ここではそのまま<IfModule mod_rewrite.c>と</IfModule>の間を書き換えます。
7 再ログインをして再設定
dashboardの左上に 「Mysites」 が表示されていればひとまず安堵します。
そして、その Mysites>NetworkAdmin>Sitesをクリック、その画面でadd new をクリック、サブディレクトリのサイト名称などを登録します。
・サブディレクトリ名称、・サイトタイトル、・言語、・admin mailを入力する(admin mailは元々のサイトと統一すべき)
そして、add siteをクリック
8 network adminとしてプラグインを全て有効化
この時、すでにマルチサイト化しているので、network adminとしてでないとプラグインは更新できない状態になっています。
するとめでたくマルチサイトに!!
・・・ならない・・。
・・もう一個のサイトが開かない。なぜ・・どうして・・どうすれば・・?
9 こんな時は。htaccessを見直すの巻
エラーとか不具合とかヤバイとかヒョエーとか、ウサヲはだいぶ慣れてきたような気がします。
実は、network admin用のダッシュボードのsettings>network settings があるのですが、そのうちの .htaccessの中身が当初と変わっておりました。
ほんの数分前のことですが、ウサヲはマルチサイト化するにあたり、心にもないサブドメインを一度は選択したのであります。wordpressをもてあそんだのです。本心はサブディレクトリにあるにもかかわらず。
そう、ウサヲはwp-config.phpの一部を「実はサブドメインじゃなくてサブディレクトリだもんねー」的に無理やり修正しましたよね。
なので、サブドメインとサブディレクトリではパスとかなんとか全然違ってくるので、それを手中に納める。htaccessが中身を翻して文言を変えるのは自明の理だったのであります。
ということで、
サブディレクトリ用に書き換えられた.htaccessに修正します。すると・・
マルチサイト!!できた!!できている!!
10 次はデータなどの設定です。
「マルチサイトが正常に動いている not= 綺麗な画面」とは限らないのです。ていうか、これはひどい、ひどすぎる。まだまだやること盛りだくさん。
①まず、事前にエクスポートしておいたデータを戻します。(ここでテキストだけは戻されたのに、メディアファイルはまったく戻されなかったことに気づかなかったウサヲは後で大変な作業をすることになります)
②settingの中身はくまなくチェックし、9割がデフォルトに戻っているので再設定をして保存します
Reading,Permalinks,その他プラグインの設定など、まるで仕返しのようにデフォルトに戻っているので再設定をします!
・・でもまだおかしい。
11 メニューがめちゃくちゃなのでなおす。
Appearance>Menus>Manage locations にて、それぞれのページをアサインしてやりました。
これでようやく普通に見えてきた!
・・でもまだ何かがおかしい。
12 メディアにノーデータ。
前述の通り、ここで初めてメディアに何も入っていない空っぽなことに気がつきます。wp importer で再度メディアだけインポートしたのですが、なぜか失敗。
どうするウサヲ?
手動に切り替える。
・・・ということで、既存データの画像を一つ一つ設定していくというマメな一面を見せたウサヲ。2017年はご褒美の食べ物が増えるかも。
13 無事本番サーバへアップロード!!
編集したファイル一式とDB一式をまるっと本番へ移し、見事正常稼働に成功いたしました!!
いいね2017年のウサヲ、いいねぇ。
まとめ
マルチサイトにするなら、新規からすべし。
既存データを抱えたまま、後でマルチサイトにすればいいや、なんて考えてるからこんなに苦労したのであります。
よくやったよ、よくやったウサヲ。リンゴの皮でも召し上がれ。