マルチサイト化したWordPressを元に戻すための方法をご紹介します。
サーバにwordpressを複数インストールした場合、それぞれのwordpressにデータベースを設定する必要がありますが、マルチサイトという便利な機能を使うと、1つのwordpressで複数のサイトを運用できます。プラグインやテーマも共用できるので、管理もその分楽になります。
昔のレンタルサーバは使えるデータベースの数に制限があったので、webサイト本体+ブログ複数というような事例ではマルチサイト機能をよく使っていました。
今では格安レンタルサーバでも、データ容量やデータベースの数に対する制限がなくなったので、WordPressをマルチサイトにして使うことはほとんどなくなりました。
マルチサイトはデメリットも多いので、これからレンタルサーバで複数サイトを運営する場合は、マルチサイト化せずにwordpressの複数インストールをお薦めします。
作業はマルチサイト化した際に書き換えたwp-config.phpと.htaccessを元に戻せばOKなので、それほど手間をかけずに通常のシングルサイトに戻すことができますよ。
WordPress マルチサイトのデメリット
wordpressのマルチサイト機能は便利な反面、いろいろなデメリットもあります。
- 設定が少し面倒
- マルチサイトに対応していないプラグインがある
- wordpressのトラブル発生時は全てのサイトで影響が出る
wordpressのマルチサイト化は、wp-config.phpや.htaccessを書き換える必要があります。別に難しくはありませんが、初心者には少し敷居の高い作業ですよね。
マルチサイトに対応していないプラグインもあり、昔はサイトマップ設置の定番プラグイン「Google XML Sitemaps」がマルチサイト非対応でした。
そして、wordpressがマルチサイト化されていると、トラブルの時はすべてのサイトに影響が出てしまいます。バックアップから復旧させる場合も、個別のサイトだけというわけにはいかず、管理がとても面倒です。
というわけで、最近はマルチサイト機能を使うこともなくなり、マルチサイト化されている場合は元に戻して、複数のwordpressを使うようにしています。
wordpress マルチサイトのトラブル
さて、先日マルチサイト化されているブログでこんなトラブルが発生しました。
個別サイトのダッシュボード左メニュー「プラグイン」がおかしくなり、新規のプラグインインストールができなくなってしまいました。
カーソルを「プラグイン」に移動させても、右側にポップアップメニューが表示されません。アドレスバーから「新規追加」のアドレスを直接入力してもダメです。
「サイトネットワーク管理者」であれば、メニューがきちんと表示されて、新規プラグインもインストールできますが、なぜか個別サイトだとうまくいきません。
同一のwordpressを使用しているので、他のサイトでも同じような症状が出ます。
今までになかったマルチサイトのトラブルなので、調べて修正するのも面倒だし、多分マルチサイトを元に戻せばこのトラブルは解消されるはずです。
しかも、他のサイトはほとんど運用されていないので、一番手間のかかるサイトの復元作業は必要ありません。というわけで、マルチサイト化されているwordpressを元に戻すことにしました。
wordpress マルチサイトの解除
マルチサイトを解除すると、基本的にマルチサイトにしてから追加したサイトは消滅します。マルチサイトを解除したときに、残るサイトをきちんと確認してから作業してください。
サイトを全て個別に復元する場合は別ですが、最初のサイトを残してそのまま運用を続ける場合は要確認です。
では、さっそくマルチサイトの解除作業に入ります。まずはphpMyAdminを使ってWordPressのデータベースをバックアップして、使用中のプラグインはすべて停止してください。
続いて、wordpressをマルチサイト化した際に書き換えたwp-config.phpと.htaccessを元に戻します。
wp-config.phpのコード編集
エディタでwp-config.phpを開いて、下記のコードを消去します。
define( 'WP_ALLOW_MULTISITE', true );
define('MULTISITE', true); define('SUBDOMAIN_INSTALL', true); define('DOMAIN_CURRENT_SITE', '自分のドメイン'); define('PATH_CURRENT_SITE', '/'); define('SITE_ID_CURRENT_SITE', 1); define('BLOG_ID_CURRENT_SITE', 1);
wordpressをマルチサイト化した場合、最初にマルチサイト機能を有効化したときと、その後でネットワークを作成したときの2回、wp-config.phpを書き換えているはずです。
上がマルチサイト機能を有効化したとき、下がネットワークを作成したときに追記したコードです。どちらもそのまま消去してください。
.htaccessのコード編集
エディタで.htaccessを開くと、コードは下記のようになっているはずです。
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # uploaded files RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L] # add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L] RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L] RewriteRule . index.php [L] </IfModule> # END WordPress
上記のコードを、このように復元します。
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
復元箇所は <IfModule mod_rewrite.c></IfModule>の間に記載されたコードです。
wp-config.phpと.htaccessは、ルートフォルダにwordpressを設置した場合の一般的な例です。ディレクトリの構成によって記載内容は異なるので、自分のサイトに合わせて変更してください。
今回の事例では、wordpressをマルチサイト化したときにwp-config.phpと.htaccessのバックアップを取ってあったので、それを上書きしました。
wordpress マルチサイトの解除完了
とりあえず、これでwordpressマルチサイトは解除されました。あとはプラグインを再有効化すればOKです。他にデータベースの掃除やファイルの整理といった作業も残っていますが、気にならないならそのまま使っても大丈夫です。
データベースを整理するなら、不要なテーブルを削除します。メインが「wp_」の場合、以後の「wp_2_」と続くテーブルが子サイトの内容なので削除します。
昔はデータベースの設置に制限があったので、wordpressをマルチサイト化するメリットは大きかったのですが、トラブル時の復旧の手間や管理を考えると、今やマルチサイトはデメリットの方が大きいと思います。
1つのサーバで複数サイトを運営する場合は、wordpressの複数インストールをお薦めします。