WordPressマルチサイトの使い方

WordPressマルチサイトについて深く知っていますか?私は愛しています笑このページではマルチサイトを運用するための完全ガイドを目指しました。

全てのWordPressユーザーはマルチサイトを覚えるべき

私はWordPressのマルチサイト機能を愛しています。私は特段の理由を除いて、クライアントのサイトに対してもマルチサイトを有効にしていますし、このサイトもマルチサイトで運用しています。

マルチサイトを有効にすることで、私が運営する全てのサイトやアプリケーションサービスは1つのWordPress・データベース・インフラ環境で成り立たせることができています。

これは、いくつサービスを立ち上げてもインフラの保守にかかる工数や費用が増大しないことを意味しており、継続的な開発に驚くほど大きな貢献をしています。

特にサービス毎にサーバーを用意する必要もないですし、負荷を個別に計算する必要がないことは、エンジニアとして非常に嬉しいばかりです。

WordPressマルチサイトのメリット

他にもいくつものメリットがあります。列挙してみましょう。

  • 新規サイトの立ち上げが1分で可能
  • 1つのインフラ・WordPress・データベースで幾つでもサービスの立ち上げが可能
  • サービス毎にサーバーを用意する必要がない
  • 各サービスを独自ドメインで運用可能(ドメインマッピングが必要)
  • 1つのドメイン配下でサービスを複数構築することで、SEO効果を共有ができる(サブディレクトリインストールの場合)
  • サイト間でデータの共有ができる
  • 1つのユーザーID ・ パスワードによる共通認証規格でサービスを提供できる。
  • SEOのmetaタグ・Feed・サイトマップなど、システムに直結しない部分の大半をプラグインに任せることが出来るため、開発工数を減らすことができる。
  • REST APIなど、APPを運用するための仕組みが充実している

WordPressマルチサイトのデメリット

もちろんデメリットも存在します。

  • 欠陥のあるコードをアップロードしてしまうと、全てのサイトに影響が出る場合がある
  • セキュリティの脆弱性による攻撃を受けた場合、全サイトに影響が出る場合がある
  • 仕組み上、サイト毎に別のユーザーID・パスワードによる認証はできない : wp-userテーブルはサイト別に作成されず、マルチサイト全体で共通管理となる

ただ、これらのいずれも「WordPressに問題があって起こる問題なのではなく、開発者側の見落として起こる」物なので、総合的にはメリットがデメリットを大きく上回っていると言えるでしょう。

このように、PHPで開発できるAPPの開発は全てWordPressに任せるべきです。確かに、WordPressは他のPHPライブラリによる開発よりも覚えることがやや多いですが、15年以上の歴史の中で多様なニーズに応えるため機能が充実した結果と捉えるべきでしょう。

本記事では、WordPressマルチサイト運用する中で、知っておくべきことと、セットアップ方法について紹介します。

私がカバーする項目は次の通りです。

  • WordPressマルチサイトとシングルサイトの違い
  • マルチサイトの使用例
  • マルチサイトを使用すべきで無い時
  • 既存のWordPressをマルチサイト化するための注意点
  • マルチサイト内での新規サイトの立ち上げ方法
  • プラグイン・テーマの扱い方
  • ドメインマッピングのセットアップ方法

始める前に、用語の解説をしておきます。

ネットワーク

WordPressマルチサイト全体のことを指す

サイト

WordPressマルチサイト内の1つのサイトのことを指す

メインサイト

WordPressマルチサイト内の1つのサイトのことを指すが、WordPressマルチサイト化の前の状態のサイトのことを指す。サブドメインでもサブディレクトリでもなく、ドメインに紐づいているサイトのこと。

サブサイト

WordPressマルチサイト内のメインサイト以外のことを指す

それではWordPressマルチサイトについて述べていきます。

WordPressマルチサイトとシングルサイトの違い

マルチサイトとは?

WordPress Codex の言葉を引用するなら、マルチサイトは次のような物です。

quote-left

A feature of WordPress 3.0 and later versions that allows multiple virtual sites to share a single WordPress installation.

WordPress Codex

WordPress一式を1つのサーバーにインストールすることで、好きなだけサイトやアプリケーションを展開することを可能にする仕組みです。

KAZU

WordPress.comもマルチサイトなんですよ。3700万のWEBサイトを1つのWordPressで運用しています。流石にデータベースの分散化作業が必要になりますが・・・・

もちろん、新しいホスティングサービスを作ろうと意気込んでいる場合を除き、データベースの分散化作業は考える必要はありません。

WordPressマルチサイトの素晴らしい点は、WordPressのインストール自体は通常のWordPressインストールと同じように行えることです。つまり、ファイルの構造も同じですし、ネットワーク内の各サイトは同じファイルを参照します。

マルチサイトでもシングルサイトでも、同じテーマ・プラグイン・コアファイル・データベースを参照させることで、ネットワーク内のどのサイトにどのソースファイルを用意するといったことを考える必要がありません。WordPressの更新もこれまで通り1クリックで行えますし、WordPress一式をサイト別に揃える必要が無いので、サーバーの容量削減にもつながります。

ただし、下記3つの点でシングルサイトとマルチサイトは異なります。

  • 管理画面の表示
  • wp-config.phpと uploadsフォルダ
  • データベース構造

管理画面の表示

マルチサイトを有効にした時、ネットワークを管理するためにいくつかのページが管理画面に追加されます。

ネットワーク管理画面

これまでの管理画面に似ていますが、別物です。

この管理画面は [特権管理者] のみがアクセスすることができる [ネットワーク管理画面] です。[特権管理者]とはWordPressの初期ユーザーや初期ユーザーが権限を与えたユーザーに対して付与されます。

WordPressマルチサイトでは[特権管理者]のみがプラグイン・テーマのインストールや更新、新規サイトの作成を行うことが出来ます。この部分は後ほど詳しく後述します。

一方で、これまで[サイトの管理画面]からはプラグイン・テーマのインストールや更新は行えなくなっています。プラグインの有効化は行えますが、すでに[ネットワーク管理画面][ネットワークで有効]にされたプラグインの操作は出来ません。

wp-config.phpと uploadsフォルダ

マルチサイトネットワークでは wp-config.php uploadsフォルダに違いがあります。

wp-config.php内にWordPressマルチサイトを有効にするために記述を追加する必要があります。

uploadsフォルダ内ではサイト別にアップロードされたリソース(画像など)が管理されます。

uploads 2 の様にサイトIDによってフォルダ分けされます。メインサイトだけは例外でシングルインストールと同様のファイル構造になります。

こうすること、サイト別にディレクトリを分け、全てのサイトが同じ様に動作する様に設計されています。

もちろん、このディレクトリ分けは自動で行われるので、気にすることは何もありません。この仕様を知っておくことが大事です。

データベース構造

マルチサイトではデータベース構造にも違いがあります。通常気にする必要はありませんが、WordPressのデータベース構造をカスタマイズする場合や、コアテーブル以外に独自のテーブルを追加するプラグインの開発をおこな場合は考慮が必要です。

通常、WordPressのデータベースは11のテーブルで構成されています。

WordPressのデータベース構造(Codexより)

これをマルチサイトにした場合、9つのテーブルはサイト別に複製され、テーブルプレフィックスの後にサイトIDが付与されて管理されます。残り3つのテーブルはネットワーク全体で共用されます。

これにより、WordPressマルチサイトはサイトごとにデータを区別しています。

KAZU

しかし、これはサイトを作成するたびに9つのテーブルが増えていくことを意味します。数十のサイトでは問題ありませんが、数百のサイトともなると、データベースとのやりとりを行うSQLクエリの処理に時間がかかり、サイトが非常に重くなります。サイト数が数百を超える様なケースではデータベースの分散化が必要です。

マルチサイトの使用例

WordPressマルチサイトは実務環境でどの様に使用されているのでしょうか?

ジャンル別・用途別にサイトを分ける

運営能力に余力がある場合は、WordPressのサイトをジャンル別に複数に分け、専門性を高めてSEO効果をあげる方法を選択する場合があります。

KAZU

私の様に、複数のアプリやクライアントの全サイトを1元管理するために使用する場合もあります。

ドメインマッピングを使えば、サイト別に独自ドメインを使うことも出来ますので、一見すると別環境の様に見えても、裏で動いているのは1つのWordPress環境であることも珍しくありません。

有名な例では BBC America があります。BBC Americaは地域別・ジャンル別でWordPressのマルチサイトを効率良く活用している良い例です。

BBC Americaはマルチサイトで動いていることで知られている。

ホスティングサービス(SAAS)を展開する

世のホスティングサービスと同じことをして、サーバースペースの提供を通じてお金をもらうビジネスを考える人もいるでしょう。

WordPressに独自の付加価値を受けても良いですし、WordPressマルチサイトで動く勤怠管理APPやWordPressマルチサイトで動く業務管理APPを開発して、契約先ごとに個別のサイトを提供することで金銭を受け取るビジネスを始めることも出来ます。

実はWordPressは一種のSAAS(ソフトウェア・アズ・ア・サービス)の提供にも使えます。

これを最も効率的に行っているのはWordPress.comです。

3700万サイトを管理するマルチサイト

WordPress.comは3700万のブログをホスティングしているサービスでWordPressマルチサイトの性能を最大限収益につなげている典型例です。裏で動いているはたった1つのWordPressなんですから驚きですね。

マルチサイトを使うべきで無い時

ここまで、WordPressのメリットばかりを伝えてきましたが、デメリットを伝えることも重要です。

KAZU

むしろ、メリットしか存在しないサービスは皆無です。

一概に言えませんが、「WordPressを使うべきで無いケース」は下記に該当する場合です。

  • 絶対にマルチサイトをすることが無いと断言できる。マルチサイトはシングルインストールより多くのCPU・メモリを消費する。
  • クライアントサイトを運用していて、彼らが自身のサーバーで管理したいと要望している場合
  • データベースをサイト別に分離したい。
  • サイト別に別々のIPアドレスが必要
  • サイトの管理者が独自のテーマ・プラグインを導入したい。
  • 利用しているサーバー環境がマルチサイトをサポートしていない(レンタルサーバーだと顕著)
  • WordPress関連のファイルへの編集権限が無い
  • ユーザー認証情報(ログイン・パスワード)をサイト別で分けたい。マルチサイトはネットワーク全体で1つのユーザー認証を共有させる。ネットワークのいずれかのサイトに新規登録すると、他のサイトにもそのIDを紐付けて新規登録が可能になる。(1つのサイトに登録すると、全てのサイトに自動で登録されるわけではない。)

もし上記のいずれかに該当する場合、そのサイトはシングルインストールのWordPressで運用を検討すべきです。

もし、サーバー環境の問題のみが障害になっているのであれば、ホスティング会社を変更すべきです。

マルチサイトを有効にする

ここまでWordPressサイトの有益性や使用例についてお伝えしてきました。では実際に有効にする方法をお伝えしていきます。

ただし・・・「完全な新規サイトのインストールなのか?」それとも「既存のサイトのマルチサイト化」なのか?によって若干の違いが生じます。

また、インストール方式を[サブディレクトリ]または[サブドメイン]にするかでも違いが生じます。

インストール方式の違い

サブドメインインストール

サブドメイン方式でWordPressをマルチサイト化します。URLはhttp://site1.yournetwork.comになります。もし、この方式で運用したい場合はワイルドカードサブドメインとそれに対応するワイルドカードSSL証明書が必要です。そのため、レンタルサーバーでこれをサポートする方式は見たことがありません。サブドメインはSEOのドメイン効果を受け継ぎません。

サブディレクトリインストール

サブディレクトリ方式でWordPressをマルチサイト化します。URLはhttp://yournetwork.com/site1になります。この方式は既存のWordPressサイト(運用月が1月以上、または記事数が一定以上(確か30))の場合は適用が出来ません。これはパーマリンク構造が壊れることを防ぐための仕様です。一部のレンタルサーバーがサポートしています。サブディレクトリはドメインが同じなので、SEOのドメイン効果を受け継ぎます。

KAZU

既存サイトへのサブディレクトリインストールはWordPressが意図的に禁止しているだけで、技術的に出来ないわけではありません。パーマリンク構造に影響が出ないことを確認の上で有効化させる方法があります。WordPressユーザーの多くはエンジニアではないために出来ない仕様にしているだけで、エンジニアであれば適切にマルチサイト化行えるはずです。

ここでは、WordPressを新規インストールすることを前提として、マルチサイトの構築を行います。

新規インストールのWordPressをマルチサイト化する方法

WordPressの新規インストールからマルチサイトの適用まで方法を説明します。

Step 1
WordPressのインストール

ホスティング先が用意しているWordPressインストールツール、またはWordPressをダウンロードして手動でインストールしてください。有名な「5分間インストール」です。

Step 2
wp-config.php を編集

wp-config.phpを開きます。ソースコード内の下記部分を見つけます。

WordPress
/* That's all, stop editing! Happy blogging. */

日本語環境なら下記を探してください。

WordPress
/* 編集が必要なのはここまでです ! WordPress でのパブリッシングをお楽しみください。 */

見つけたら、このしたに下記のコードを記載してください。

WordPress
define( 'WP_ALLOW_MULTISITE', true );

この状態ファイルを保存してください。

Step 3
サイトネットワークの設置
マルチサイトセットアップページで必要事項を記入

マルチサイトの有効ページに移動して、マルチサイトの有効化を行います。

  1. 管理画面で [ ツール サイトネットワークの設置 ] に移動します。[サブドメイン] または [サブディレクトリ]のいずれかをいずれかを選択します。
  2. サイトのネットワーク名と特権管理者のメールアドレスを指定します。これらの情報はあとで変更可能です。
  3. [インストール]をクリックします。
Step 4
wp-config.php .htaccessを編集
.htaccessとwp-config.phpにコードを追加してマルチサイトのリライトルールを適用

マルチサイトのインストール方式を選択して[インストール]をクリックすると wp-config.php .htaccessへの記述が求められますのでファイルの更新を行いましょう。

KAZU

.htaccessファイルが見当たらない場合はこちらの記事をご覧ください。

作業を完了したら、両方のファイルを保存してください。

補足

サーバーが[NGINX]の場合は wp-config.phpの編集だけが求められている様に見えますが、サーバー側の設定も別途必要になります。

wp-config.phpにコードを追加してマルチサイトのリライトルールを適用

マルチサイトの管理

これでマルチサイト化を完了して、複数のサイトを1つの環境下内で運用する準備が出来ました。マルチサイト化直後はメインサイトのみを運用している状態になります。メインサイトはこれから作成するサブサイトに違いはありません。

それでは、初歩的なことになりますが、サイトネットワーク画面でできることについて解説してきます。

新規サブサイトの追加

サブサイトの新規作成は「[ネットワーク管理画面] から手動」で行うか、ユーザーがあなたのWordPressサイトに「アカウントを発行する際に自動で作成して付与する」かで行われます。一般的には「[ネットワーク管理画面] から手動」で行うのがほとんどなので、こちらのやり方を説明します。

  1. [ネットワーク管理画面]にアクセスして、[参加サイト ネットワーク管理]を開きます。
  2. [サイト 新規追加]をクリックします。
  3. サイトのアドレス(サブドメインまたはサブディレクトリ)・サイト名・管理者にしたいユーザーのメールアドレス記入して[サイトを追加]をクリックします。
ネットワークにサイトを新規追加

新しいサイトが作成されます。もし管理者のメールアドレスを自分のアカウントのものにした場合は[参加サイト]の部分にメニューが追加されているはずです。

別のユーザーを管理者に指定した場合でも、特権管理者であるあなたは[参加サイト すべてのサイト]で全サイトの閲覧・編集が可能です。

参加サイトの確認方法

プラグイン・テーマの有効化

特権管理者のみがテーマのインストールを行えます。特権管理者は以下の2つの方法を通じて各サイトで有効化ができるテーマを選択することが出来ます。

ネットワーク内全サイトでテーマを有効化できる様にする

これを行うには下記の手順にしたがって設定を行ってください。

テーマのネットワーク有効化
  1. [ネットワーク管理画面 テーマ 新規追加]でテーマを新規インストール
  2. インストールしたら[ネットワーク管理画面 インストールされているテーマ ]でテーマをネットワーク有効化

ネットワーク内の特定のサイトだけでテーマを有効化できる様にする

ややこしい言い方ですが、マルチサイトにおける[ネットワーク管理画面]での[ネットワーク有効化]とは「全サイトでそのテーマを使うのではなく、全サイトでそのテーマを有効にできる様にする」という意味合いです。注意してください。

特定のサイトだけでテーマを有効化できる様にするには、下記手順にしたがってください。これは個々のサイトで有効にできるテーマを絞っておくことで、誤って異なるテーマを有効にしないなどの用途で使用されます。(私は使ったことがほとんどないですけども・・・)

ネットワーク内のサイト管理
特定サイトのみでテーマの有効化を可能にする
  1. [ネットワーク管理画面 テーマ 新規追加]でテーマを新規インストール
  2. [ネットワーク管理画面 サイト いずれかのサイト 編集 ]でサイトの編集画面を開く
  3. [タブ : テーマ]を選択して、有効にしたいテーマを有効化

これで、特定のサイトだけで特定のテーマのにを有効可能にすることが出来ます。

いずれの方法でも実際のテーマの有効化は各サイトの[外観 テーマ]で行います。

テーマの有効化

プラグインのインストールと有効化

マルチサイト環境におけるプラグインのインストールはシングルインストールの場合とほとんど同じです。サイト別に異なる組み合わせのプラグインを有効にして、サイトを運用することが出来ます。

しかし、明確な違いが2つあります。

  • 一部のプラグインはネットワークでしか有効化出来ない
  • ネットワークで有効化した場合は、ネットワーク内の全てのサイトで強制的に有効になる

新しいプラグインのインストールおよびネットワーク全体でプラグインを有効にするには下記の手順にしたがって設定を行ってください。

  1. [ネットワーク管理画面 プラグイン 新規追加] で新しいプラグインをインストールします。
  2. [ネットワーク管理画面 プラグイン インストール済みプラグイン ]でプラグインの[サイトネットワークで有効化]を行います。
プラグインをサイトネットワークで有効化

ネットワークの[ユーザー]ページ

[ネットワーク管理画面]にもユーザーの管理ページがあります。このページではネットワーク全体を通したユーザー管理を行うことが出来ます。下記はその一例です。

  • 特権管理者ユーザーの追加
  • ユーザーを特定のサイトの管理者に登録する
  • どのユーザーがネットワークのどのサイトに新規登録しているかを確認
  • 特定のサイトからだけ特定のユーザーの登録を解除
ネットワーク上でのユーザー管理 会員サイトの運用ではよく使う

ネットワークの[サイト]ページ

[ネットワーク管理画面]には各サイトに向けに個別の管理ページが用意されています。アクセスするには[ネットワーク管理 サイト  【編集したいサイトの[編集]】]をクリックします。

4つのタブが用意されています。

  • 情報
  • ユーザー
  • テーマ
  • 設定
KAZU

[テーマ]については既に述べています。

情報

サイトのメタ情報を編集できます。

サイトのメタ情報を編集できる

ユーザー

このサイトへの既存ユーザの追加及びネットワークに存在しない全く新しいアカウントを作成し、同時にこのサイトへの新規登録を行うことが可能です。

サイトのメタ情報を編集できる

設定

ここには該当するサイトの wp-options テーブルに格納されているデータの全てが編集可能になっています。ただし、シングルインスール時に編集可能な項目は各サイトの管理画面でもできるので、ここではなくそちらで行うべきです。

wp-optionsテーブルの情報を編集できる
KAZU

この画面では確かに全てのオプション項目の更新が可能ですが。保存するたびに全てのオプションテーブルの更新を行います。(マージではないのです)

そのため、大量のSQLクエリを吐き出します。そのため、処理時間が非常に長くなってしまい、503エラーを吐き出してしまうことが多いです。そのため、ここでしか更新ができない非一般的なオプション項目の更新は直接データベース上で操作する必要があります。

エンジニアではない方は「触らぬは祟りなし」です。

ネットワークの[設定]ページ

ここではネットワーク全体に関する設定を行うことが可能です。

ネットワーク全体の設定画面

主にできることは次の通りです。

  • ネットワーク名の編集
  • メインの特権管理者のメールアドレスの編集
  • 新規ユーザー作成に関する設定
  • アップロードに関する設定
  • 言語設定
  • プラグインメニューの表示設定

まとめ

WordPressマルチサイトの概要について理解いただけたら幸いです。日本ではレンタルサーバーが主流となっており、海外の様にVPS文化があまり深く浸透していません。

レンタルサーバーではWordPressのマルチサイトをサポートしていないことが珍しくないなめにマルチサイトの理解が進んでいない様に思えます。

もちろん、VPSやAWS環境ではWordPressマルチサイトの構築は自由に可能ですし、実際に導入してみるとシングルインストールと大差がなく、魅力的な特徴の数々に惹かれるでしょう。

KAZU

私はたった1つのサイトの運用でもとりあえずマルチサイトにしています。