マルチサイトのネットワーク管理

マルチサイトネットワーク作成後には、マルチサイトの複雑さに起因する、高度な管理に必要な追加情報があります。WordPress に詳しいユーザーも、マルチサイトネットワーク管理の位置と振る舞いには混乱するでしょう。

ユーザーアクセスと権限

仕様によりネットワークに追加されたユーザーは、ネットワーク内のすべてのサイトの購読者権限を持ちます。各サイトで異なるデフォルトの権限を付与する場合は、プラグインを使用する必要があります。

サイト管理者の権限も、ネットワーク上では一部削除されています。サイト管理者はテーマやプラグインをインストールすることはできず、自分のサイトのユーザーのプロフィールを編集することもできません。ネットワーク管理者 (特権管理者とも言います) は、ネットワーク上でこれらのタスクを実行する権限を持ちます。

サブフォルダインストールとパーマリンク

パーマリンクは変わらず動作しますが、メインサイト (最初に作成したサイト) には新しいエントリー「blog」が追加され、例えば URL は domain.com/blog/YYYY/MM/POSTNAME の形になります。

固定ページは接頭辞「blog」を使わないことに注意してください。固定ページはベース URL から直接アクセスできます (例: domain.com/PAGENAME)。ネットワーク内に存在する他のサイトと同じ名前の固定ページを最初に作成したサイト内に作成すると、ページのスラッグに接尾辞がつきます (例: domain.com/PAGENAME-2)。逆に、存在する固定ページのスラッグと同じ名前のサイトを作った場合、その固定ページはアクセスできなくなります。これを防ぐには固定ページの名前をブロックリストに追加し、同じ名前のサイトを作成できないようにします。

アップロードされたファイルのパス

最初に作成したサイトでは、アップロードしたファイルはこれまで通り /wp-content/uploads/ に保存されますが、それ以降に作成したサイトでは /wp-content/uploads/sites/ フォルダー下の、データベース上のサイト ID と同じフォルダ内に保存されます。アップロードしたファイルは同じ URL でアクセスできます。

サイト管理者はファイルの保存場所を変更できません。ネットワーク管理者だけがサイト設定画面から変更できます。ただし、ms-files.php.htaccess とどのように動作するかを理解していない場合は変更を推奨しません。誤ると簡単に WordPress が動作しなくなります。

プラグイン

プラグインはネットワーク対応の度合いにより、さらなる柔軟性を獲得します。すべてのプラグインはネットワークのダッシュボードからインストールでき、各サイトごとに、あるいはネットワーク全体で有効化できます。

  • サイト固有のプラグイン: 単一サイトのプラグインのページ内からのみ有効化できます。たとえばフォームプラグインなどある種のプラグインは単一サイトで有効化された場合に最もよく動作します。これはデータと設定をネットワーク全体のテーブルではなく、単一サイトのデータベーステーブルに保存できるためです。単一サイトで有効化、無効化されるプラグインは plugins ディレクトリに保存されます。
  • ネットワークのプラグイン: 特権管理者はネットワーク管理画面でプラグインをネットワーク全体で有効化できます。ネットワークで有効化されたプラグインはすべてのサイトで有効です。ネットワークで有効化されたプラグインは各サイトの管理画面のプラグイン一覧では「ネットワークで有効化」と表示されます。ネットワーク全体で有効化されたプラグインも plugins ディレクトリに保存されます。
  • 必須プラグイン (Must-Use プラグイン、MU プラグイン): ネットワーク全体のすべてのサイトで使用するプラグインは mu-plugins ディレクトリに単一ファイルかサブフォルダに入った形で格納できます。その中のファイルは読まれません。それらのファイルは有効化したり無効化したりできず、常に利用されます。各サイトからは隠されます。

リポジトリーのすべてのプラグインがマルチサイト環境で動作するわけではありません。特定のプラグインがマルチサイトネットワークで動作するかどうか確認するにはプラグインのリポジトリーページで問い合わせるか、開発者に連絡してください。

単一サイトの管理者がサイト固有のプラグインを有効化、無効化するには、ネットワーク管理者が単一サイト管理者に対して、プラグインのページを有効化する必要があります。「サイトネットワーク設定」の「メニュー設定」の「管理メニューを有効化」で「プラグイン」をオンにしてください。ネットワーク管理者は常にすべてのサイトのプラグインにアクセスできます。単一サイトの管理者は、ネットワークで有効化されていないプラグインを有効化、無効化できます。またネットワークで有効化されているプラグインは、「ネットワークで有効化」と表示されるだけで、無効化や設定のオプションは表示されません。

単一サイト用に大量のプラグインの有効化、無効化を支援するプラグインがあります。

テーマ

すべてのテーマがネットワーク全体にインストールされます。テーマのコードを編集すると、そのテーマを利用しているすべてのサイトに影響します。WP Add Custom CSS プラグインを使用すると他のサイトに影響を及ぼさずに各サイトでCSSを変更できます。また各サイトはテーマカスタマイザーを使用できます。設定はデータベース内のサイトごとのテーブルにのみ保存されます。

テーマを「サイトネットワークで有効化」しても各サイトでテーマは有効化されず、単に各サイトで有効化できるようになるだけです。単一サイトのダッシュボードでテーマを利用可能にするにはネットワークで有効化するか、「ネットワーク管理」->「サイトの編集」->「テーマ」で有効化します。単一サイトでテーマが有効化されると、サイトネットワークで無効化しても、テーマはその単一サイトで有効化されたままになります。

デフォルトではもっとも最新の公式テーマ「Twenty …」をすべての新規サイトのテーマとして割り当てます。これをカスタマイズするには wp-config.php ファイルに define('WP_DEFAULT_THEME', 'classic'); を追加してください。ここで ‘classic’ は、希望するテーマのフォルダー名で置換してください。

カテゴリーとタグ

ネットワーク上の異なるサイト間で共有可能なタグやカテゴリーのような「グローバルターム」は、WordPress では提供されません。プラグインを使用することでサイトのポータルやフロントページ、特定のページ、ネットワークのサイトでグローバルタグを組み込むことができます。細かくカテゴリー分けされたコンテンツのナビゲーションを向上できます。

サイト間でのコンテンツの共有

ネットワークのサイトは、別個のサイトで、デフォルトではコンテンツを共有しません。ネットワークを WordPress.com のミニ版と考えてください。サイト間でのコンテンツ共有をサポートするプラグインがいくつかあります。

ネットワークタイプの切り替え

ドメインベース (サブドメイン形式) とパスベース (サブディレクトリ形式) でマルチサイトのインストールを変更することは可能です。WordPressを始めて1ヶ月以上経過したのちにマルチサイト化しようとすると、サブドメイン形式を使うように指示されます。これは固定ページ(例: example.com/pagename)とサイト名(例: example.com/sitename)の衝突を避けるためです。そのような問題がないと確信できる場合、初期設定完了後に変更できます。

wp-config.php ファイルで SUBDOMAIN_INSTALL の define 文を変更します。

ドメインベース(サブドメイン形式) の場合

define( 'SUBDOMAIN_INSTALL', true );

パスベース(サブディレクトリ形式) の場合

define( 'SUBDOMAIN_INSTALL', false );

.htaccessについても新しい設定に変更する必要があります。「サイトネットワーク管理」->「設定」->「サイトネットワークの設置」にアクセスし、新しい .htaccess ルールを参照してください。以下も参照してください。

注意: 設定条件として、127.0.0.1 または localhost ではサブディレクトリ形式からサブドメイン形式へ変更できません。これは、Cookie処理の関係でルートサイトにおいて reauth=1 の無限ループを引き起こす可能性があるためです。

Apache Virtual Hosts と Mod Rewrite

Apacheの仮想ホストでmod_rewriteを有効にするには、DocumentRootの設定が必要な場合があります。

<VirtualHost *:80>
DocumentRoot /var/www/vhosts/wordpress
<Directory /var/www/vhosts/wordpress>
AllowOverride Fileinfo Options
</Directory>

いくつかのサーバーでは、.htaccessのルールをすべて反映するためにAllowOverrideにAllを追加する必要があります。

.htaccess と Mod Rewrite

mod_rewrite を必要としない、”Ugly” (汚い) 形式のパーマリンクを使用できる単一サイトのWordPressとは異なり、マルチサイトではサブサイトのURL 形式を使用する必要があります。したがって、サブフォルダ形式を使用するか、サブドメイン形式を使用するかによって少し異なる .htaccess ファイルが必要です。以下は、サブフォルダ形式とサブドメイン形式の標準的な .htaccess の例です。ここでは WordPress をサイトのルートディレクトリにインストールするものとします。インストールディレクトリをルート以外に変更する場合は、RewriteBase を適切に書き換える必要があります。

なお、これはであり、多くの場合はこれで動作しますが、すべてとは限らないことに注意してください。

サブフォルダー形式の例 (WordPress 3.5 以上の場合)

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]

サブドメイン形式の例 (WordPress 3.5 以上の場合)

RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ wp/$1 [L]
RewriteRule . index.php [L]

ドメインマッピング

WordPress 4.5 より前のバージョンでは、ドメインマッピングに専用のプラグインを必要としました。WordPress 4.5 以降はドメインマッピングはマルチサイト内の機能です。詳細については「WordPress マルチサイトのドメインマッピング」を参照してください。

マルチサイトの移動

マルチサイトの移動はシングルサイトの移動よりも複雑です。WordPress マルチサイトの移動を参照してください。

ネットワークへのインポート

WordPressのネットワークを作成し、他のサイトからインポートするには、複数のブログをマルチサイトに移行するを参照してください。

原文

この記事は役に立ちましたか ? どうすればさらに改善できますか ?