カテゴリー
WordPressカスタマイズ

マルチサイト構築方法まとめ

WordPress バージョン3.0以降に搭載されたマルチサイト機能のについてまとめます。
マルチサイトはひとつの WordPress で複数のサイトを運営できます。
通常インストールした後に追加設定を行っていく形となります。

前提として WordPress でマルチサイトは必要か?

「マルチサイトって必要?」
マルチサイト構築方法の解説ページでいきなりちゃぶ台を返すような衝撃発言です(笑
というのも、WordPress のインストールはものの数分で終わってしまうので、それぞれ構築しても大体のケースで大した手間ではありません。
もちろん、いくつインストールしようが WordPress は無償です。
また、データベースがひとつに集約されてしまうため、それぞれのサイトのコンテンツが多くなれば肥大化してしまい、メンテナンス性も今いち。

結論としてわたしはサブディレクトリにしてもサブディレクトリにしても、それぞれ個別に WordPress をインストールしています。
構築にほんとうにマルチサイトが必要かよく考察することをお勧めします。
それでも、「マルチサイトで構築したい」という方は読み進めてください!

マルチサイト化にあたっての準備

わたしの場合は既存サイトをサブディレクトリ型で分割して専門性を高めるためにマルチサイトに移行することとしました。
その中で事前に決めておいた方がよそうな点をあげます。

URL の正規化

いわゆるwwwありかなしかという話ですが、通常のシングルサイトでは一般設定の WordPress アドレス(URL)とサイトアドレス(URL)で後から簡単に変更できます。

シングルサイトでの一般設定
シングルサイトでの一般設定

なぜマルチサイトの構築方法の一番初めにこの設定を説明するかというと後から変更するのは非常に面倒だからです。

マルチサイトの場合もデータベースまでいじれば可能だとは思いますが、シングルサイトのようにダッシュボード上で後から URL の正規化をすることはできません。
マルチサイトにおいても最初に通常にインストールしますが、この状態でwwwありかなしかを決めておきます。以降はすべてのサイトがここで設定した URL に正規化されます。

もっとも、サブドメイン型の場合はどちらにしても子サイトにwwwはつきませんが・・・

サブドメインとサブディレクトリ

WordPress のマルチサイトは用途に合わせてサブドメイン型とサブディレクトリ型を選択できます。注意しなければいけないのが、WordPress をインストールしてから30日以内にマルチサイト化しなければ、サブディレクトリ型は選択できません。

厳密には投稿の日付を見ているようなので、例えば他のサーバーからの移転やドメイン変更時にサブディレクトリ型のマルチサイトしようと考えた場合、旧記事をインポートした時点でこの条件に引っかかるということになります。ですからその場合は先にマルチサイト化しておくという手順になるかと思います。

力技として、現在の投稿とページを含めて、クローンを作成した後に削除、マルチサイト化した後にインポートという方法もあります。
これからサイトを始める場合や既存のデータベースをそのまま使えるサブドメイン型の場合はこういった問題はないかと思います。
※サブドメイン型の場合はサーバー側でサブドメイン設定を行っておく必要があります。

Duplicator プラグインの複製でサイト移設、検証環境を作る

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」より変更が可能です。

サイトネットワーク管理者画面
サイトネットワーク管理者画面
Permalink Structure
Permalink Structure

一番先頭に/blog/がついていると思いますので、この部分を削除します。

親サイトのパーマリンク設定画面では/blog/が残っていますが、実際の URL からは/blog/がなくなります。

メインサイトのパーマリンク設定
メインサイトのパーマリンク設定
profile image

執筆:R3098

WEB サービス構築・監修が生業です。WordPress 関連では Aurora Heatmap などプラグイン開発も行っています。悩めるサイト運営者の無料相談受付けます!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトは reCAPTCHA によって保護されており、Google のプライバシーポリシー および 利用規約 に適用されます。

reCaptcha の認証期間が終了しました。ページを再読み込みしてください。