WordPressバージョン3.0以降に搭載されたマルチサイト機能のについてまとめます。
マルチサイトはひとつのWordPressで複数のサイトを運営できます。
通常インストールした後に追加設定を行っていく形となります。
前提としてWordPressでマルチサイトは必要か?
「マルチサイトって必要?」
マルチサイト構築方法の解説ページでいきなりちゃぶ台を返すような衝撃発言です(笑
というのも、WordPressのインストールはものの数分で終わってしまうので、それぞれ構築しても大体のケースで大した手間ではありません。
もちろん、いくつインストールしようがWordPressは無償です。
また、データベースがひとつに集約されてしまうため、それぞれのサイトのコンテンツが多くなれば肥大化してしまい、メンテナンス性も今いち。
結論としてわたしはサブディレクトリにしてもサブディレクトリにしても、それぞれ個別にWordPressをインストールしています。
構築にほんとうにマルチサイトが必要かよく考察することをお勧めします。
それでも、「マルチサイトで構築したい」という方は読み進めてください!
マルチサイト化にあたっての準備
わたしの場合は既存サイトをサブディレクトリ型で分割して専門性を高めるためにマルチサイトに移行することとしました。
その中で事前に決めておいた方がよそうな点をあげます。
URLの正規化
いわゆるwww
ありかなしかという話ですが、通常のシングルサイトでは一般設定のWordPressアドレス(URL)とサイトアドレス(URL)で後から簡単に変更できます。
なぜマルチサイトの構築方法の一番初めにこの設定を説明するかというと後から変更するのは非常に面倒だからです。
マルチサイトの場合もデータベースまでいじれば可能だとは思いますが、シングルサイトのようにダッシュボード上で後からURLの正規化をすることはできません。
マルチサイトにおいても最初に通常にインストールしますが、この状態でwww
ありかなしかを決めておきます。以降はすべてのサイトがここで設定したURLに正規化されます。
もっとも、サブドメイン型の場合はどちらにしても子サイトにwww
はつきませんが・・・
サブドメインとサブディレクトリ
WordPressのマルチサイトは用途に合わせてサブドメイン型とサブディレクトリ型を選択できます。注意しなければいけないのが、WordPressをインストールしてから30日以内にマルチサイト化しなければ、サブディレクトリ型は選択できません。
厳密には投稿の日付を見ているようなので、例えば他のサーバからの移転やドメイン変更時にサブディレクトリ型のマルチサイトしようと考えた場合、旧記事をインポートした時点でこの条件に引っかかるということになります。ですからその場合は先にマルチサイト化しておくという手順になるかと思います。
力技として、現在の投稿とページを含めて、クローンを作成した後に削除、マルチサイト化した後にインポートという方法もあります。
これからサイトを始める場合や既存のデータベースをそのまま使えるサブドメイン型の場合はこういった問題はないかと思います。
※サブドメイン型の場合はサーバ側でサブドメイン設定を行っておく必要があります。
WordPressでのマルチサイトの設定
準備を整ったら、いよいよWordPressでマルチサイトの設定を行います。といっても、そんなに敷居の高い作業ではありません。流れとしては下のようになります。
- wp-configでマルチサイト運用のためのネットワーク機能を追加。
- サブドメインかサブディレクトリ選択して、それに伴う変更記述をwp-configとhtaccessに加える。
1.wp-config.phpでマルチサイト機能の有効化
wp-configに追記します。
define( 'WP_ALLOW_MULTISITE', true );
* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */のすぐ下に加えると分かりやすいかと思います。
2.サイトネットワーク機能のインストール
ダッシュボードの管理画面を読み込み直すとツール→ネットワークという項目が追加されているはずです。(ログオフの必要はありません)
ネットワークの作成の画面が表示されるため、任意のネットワーク名とサブドメインかサブディレクトリを選択してインストールします。(ネットワーク名は後で変更可能です)
※ちなみにマルチサイト化をするとこれまでの管理者が権限の特権管理者に変わります。マルチサイトでそれぞれのサイト管理者が作成され、特権管理者であれば、それらに特権管理者権限を与えられますが、ネットワークを含めたすべてを統括する管理者はサイト所有者だけの方がよいように思います。
3.再度、wp-configに追記
ネットワークがインストールされるとwp-config.phpと.htaccessを指定記述に書き換えるよう促されます。wp-config.phpは先ほど追加したすぐ下に加えればよいと思います。
※下はサンプルです。実際は自身のダッシュボードで表示されるものをコピー&ペーストしてください。
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'example.ne.jp');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
加えて.htaccessにも追記を指示されます。基本的にそのまま一番下に追加すれば動きます。
4.htaccessの変更
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [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).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
カテゴリーページなどへのリンクが404となってしまう場合は何度かリンクを行き来してみたり、パーマリンクを設定し直すと正常に動作するようになるはずです。(パーマリンク設定でそのままの状態で変更を保存ボタンを押す、あるいは、一度、他のパーマリンク設定にして戻す)
メインサイトのURLから/blog/を抜く
マルチサイト化した場合にパーマリンクが「デフォルト」以外に設定されている場合はメインのサイトのURLに自動的に/blog/が追加されます。ドメインが「example.com」で投稿名が「hello-world」の場合、「example.com/blog/hello-world」がURLとなります。
このいただけない仕様はサイトネットワーク管理者→サイト→編集→「Permalink Structure」より変更が可能です。
一番先頭に/blog/がついていると思いますので、この部分を削除します。
親サイトのパーマリンク設定画面では/blog/が残っていますが、実際のURLからは/blog/がなくなります。