べんりワザ・WordPressのマルチサイト

WordPressマルチサイトの作り方

1つのWordPressで複数サイトを運営するマルチサイトの構築手順。wp-config.phpの2段階の記述、サブドメインとサブディレクトリの選び方、子サイトの追加と管理画面の違いをまとめました。

マルチサイトは、1つのWordPressで複数のサイトを運営する機能です。テーマとプラグインを共有しつつ、サイトごとに記事・ユーザー・設定を分けられます。

手順は「wp-config.phpに1行足す→ネットワークを設置→指示された記述を追加」の3段階です。

手順1:マルチサイトを許可する

wp-config.phpに1行足します。必ず「編集が必要なのはここまでです」より上に書きます。

define('WP_ALLOW_MULTISITE', true);

手順2:ネットワークを設置する

  1. 管理画面を再読みこみし、「ツール」→「ネットワークの設置」を開く
  2. サブドメイン型かサブディレクトリ型かを選ぶ(あとから変えるのは大変なのでここで決める)
  3. ネットワークのタイトルと管理者メールを入力して「インストール」

手順3:指示された記述を追加する

インストール後の画面に、wp-config.php.htaccessに貼るコードが表示されます。画面の指示どおりにコピーします。wp-config.php側はこんな内容です。

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);        // サブディレクトリ型ならfalse
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

.htaccess既存のWordPress用の記述を置きかえる形になります(追記ではありません)。貼り替えたら、指示どおり一度ログアウトして再ログインします。

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

サブディレクトリ型サブドメイン型
URLexample.com/shop/shop.example.com
DNS設定不要ワイルドカードのDNS設定が必要
手軽さ◎ すぐ始められる△ サーバーの対応が必要
見え方同じサイトの一部に見える独立したサイトに見える
向いている用途支店ページ・言語別ページ・部署サイトブランドごとのサイト・貸し出すサイト

迷ったらサブディレクトリ型。DNSやサーバー設定が要らず、あとから個別ドメインを割り当てることもできます。

子サイトを追加する

設置が終わると、管理バーに「参加サイト」→「サイトネットワーク管理」が現れます。

  1. 「サイトネットワーク管理」→「サイト」→「新規追加
  2. サイトのアドレス(スラッグ)・サイトのタイトル・言語・管理者メールを入力
  3. 「サイトを追加」

これでexample.com/shop/のような子サイトができます。スラッグはあとから変えると各所のURLに影響するので、短く分かりやすい名前を最初に決めます。

管理画面の構造が変わる

マルチサイトでは、権限と設定の場所が2階層になります。

  • サイトネットワーク管理者(Super Admin)——テーマ・プラグインの導入、サイトの追加、ユーザーの一括管理
  • 各サイトの管理者——記事・固定ページ・そのサイトの設定

覚えておく大事な違いは3つです。

  • テーマ・プラグインのインストールはネットワーク管理者だけ(各サイトの管理者はできない)
  • テーマは「ネットワークで有効化」しないと各サイトで選べない
  • プラグインは「ネットワークで有効化」で全サイト一括、または各サイトで個別に有効化
べんりワザマルチサイトのメリット・デメリット(使うべき?)そもそもマルチサイトにすべきか迷っている人は、メリット・デメリットの整理をどうぞ

使う前に知っておく設定

アップロード容量の上限

ネットワーク管理の「設定」で、サイトごとのアップロード上限(既定は控えめな値)を調整できます。画像を多く使うサイトでは最初に上げておきます。

ユーザー登録の許可

同じ「設定」で、ユーザー登録とサイトの新規作成を誰に許可するかを決められます。社内利用なら「無効」または「管理者のみ」にしておくのが安全です。

使えるファイル形式

ネットワーク全体で許可する拡張子を指定できます。SVGやZIPを扱う場合はここを確認します。

テーマとプラグインの扱い

wp-content/
├── themes/      ← 全サイトで共有(ネットワークで有効化して配る)
├── plugins/     ← 全サイトで共有(一括/個別に有効化)
└── uploads/
    ├── (メインサイトの画像)
    └── sites/2/  ← 子サイトの画像はサイトIDごとのフォルダへ

画像はサイトごとに分かれるuploads/sites/<ID>/)ため、サイト間で画像を使い回すことはできません(URLで参照するなら可能)。

べんりワザマルチサイトで親子テーマを設計する親テーマを共有してサイトごとに子テーマを当てる運用はこちら

やめたいときは戻せる?

マルチサイトを完全に元へ戻すのは簡単ではありません(データベースにサイトごとのテーブルが増えるため)。子サイトが1つなら、記事をエクスポートして新しいWordPressへ移す方法が現実的です。

「あとで戻せない前提で始める」のが安全な姿勢です。判断に迷うなら、次の記事で向き・不向きを確認してください。

まとめ

  1. 手順はWP_ALLOW_MULTISITE→ネットワークの設置→指示されたコードをwp-config.php.htaccess
  2. サブディレクトリ型が手軽(サブドメイン型はワイルドカードDNSが必要)。あとから変えるのは大変
  3. テーマ・プラグインはネットワーク管理者が入れて「ネットワークで有効化」
  4. 元に戻すのは難しいので、バックアップと事前のテストが前提

構築自体は10分ほどで終わります。難しいのは「本当にマルチサイトが向いているか」の判断のほうです。

よくある質問

マルチサイトはあとから有効化できますか?
できます。既存のWordPressにwp-config.phpの記述を足して「ツール」→「ネットワークの設置」を実行すれば、そのサイトがネットワークの最初のサイトになります。ただし記事や設定に影響が出る変更なので、必ずバックアップを取ってから行ってください。
サブドメインとサブディレクトリはどちらを選ぶべきですか?
URLの見え方の違いです。サブディレクトリ(example.com/shop/)はDNS設定が不要で手軽、サブドメイン(shop.example.com)は各サイトを独立したサイトに見せたいときに向いています。あとから変更するのは大変なので最初に決めます。
有効化したのに「ネットワークの設置」メニューが出てきません
wp-config.phpにdefine('WP_ALLOW_MULTISITE', true);を書いたあと、管理画面を再読みこみして「ツール」の中を確認してください。書く位置が「/* 編集が必要なのはここまでです */」より下だと反映されません。
1つのサイトだけ別のドメインで運用できますか?
できます。ドメインマッピングと呼ばれる機能で、いまのWordPressは標準で対応しています(ネットワーク管理画面のサイト編集でドメインを変更)。DNSとサーバー側の設定もあわせて必要です。