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

ヘッダ画像

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


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

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

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

URLの正規化

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

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

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


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

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

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

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

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

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

力技として、現在の投稿とページをすべてエクスポートした後に削除、マルチサイト化した後にインポートという方法もあります。

これからサイトを始める場合や既存のデータベースをそのまま使えるサブドメイン型の
場合はこういった問題はないかと思います。

※サブドメイン型の場合はサーバ側でサブドメイン設定を行っておく必要があります。

WordPressでのマルチサイトの設定

準備を整ったら、いよいよWordPressでマルチサイトの設定を行います。といっても、そんなに敷居の高い作業ではありません。流れとしては下のようになります。

1.wp-configでマルチサイト運用のためのネットワーク機能を追加。
2.サブドメインかサブディレクトリ選択して、それに伴う変更記述をwp-configとhtaccessに加える。

wp-configでネットワーク機能を有効にする

wp-config.phpに下の記述を追加します。

define( 'WP_ALLOW_MULTISITE', true );

* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */のすぐ下に加えると分かりやすいかと思います。

ダッシュボードの管理画面を読み込み直すとツール→ネットワークという項目が追加されているはずです。(ログオフの必要はありません)

ネットワークの作成の画面が表示されるため、任意のネットワーク名とサブドメインかサブディレクトリを選択してインストールします。(ネットワーク名は後で変更可能です)

※ちなみにマルチサイト化をするとこれまでの管理者が権限の特権管理者に変わります。マルチサイトでそれぞれのサイト管理者が作成され、特権管理者であれば、それらに特権管理者権限を与えられますが、ネットワークを含めたすべてを統括する管理者はサイト所有者だけの方がよいように思います。

マルチサイトのための追記

ネットワークがインストールされるとwp-config.phpと.htaccessを指定記述に書き換えるよう促されます。wp-config.phpは先ほど追加したすぐ下に加えればよいと思います。
※下はサンプルです。実際は自身のダッシュボードで表示されるものをコピー&ペーストしてください。

wp-config.php

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'example.sakura.ne.jp');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

加えて.htaccessにも追記を指示されます。基本的にそのまま一番下に追加すれば動きます。

.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/がなくなります。

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

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


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

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

コメントを残す

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

関連記事

「トップに戻る」ボタンでスマホでのユーザビリティアップ!

ウェブサイト上でコンテンツを下にスクロールさせると「トップに戻る」ボタンが出現して、クリックするとビ […]

メールフォームプロCGIをWordPressに設置

WordPressのフォームについて、定番のContact Form7をはじめ、いろいろとプラグイン […]

WordPressで現在のページ表示に使用しているテンプレートをすべて知る

WordPressでは、投稿タイプに応じてデフォルトの構成テンプレートが適用されます。 ただし、プラ […]

ページ内目次を見出しタグから自動生成

Wikiをはじめ、記事の先頭にリストの目次(インデックス)をつけているサイトを目にしたことがあると思 […]