• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

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

提供: WordPress Codex 日本語版
移動先: 案内検索

あなたがネットワークを作成したら、マルチサイト固有の追加の複雑な事項により、詳細なネットワーク管理のために必要になるかもしれない追加事項があります。たとえあなたがWordPressに親しんでいても、マルチサイト管理の場所と振る舞いは混乱するかもしれません。

ユーザーアクセス

設計上の都合により、ネットワークのユーザーはネットワークのすべてのサイトの購読者権限を持ちます。各サイトで異なるデフォルトの権限を付与したい場合、Multisite User Managementのようなプラグインが必要となります。

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

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

パーマリンクは相変わらず正常に動作しますが、メインサイト(つまり最初に作成したもの)は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でアクセスできます。

マルチサイトの3.0-3.4.2からは変化しています。それらの古いバージョンでは、/wp-content/blogs.dir/に保存され、ファイルは http://example.com/files/http://example.com/sitename/files などの形でアクセスできました。3.5以前のWordPressからマルチサイトを用いている場合、/files/へのファイルのアクセスはエラーになりません。

WordPressのバージョンによらず、サイト管理者はファイルの保存場所を変更できません。ネットワーク管理者だけがサイト設定画面から変更できます。ただし、ms-files.php.htaccessと密接に関連していて、簡単に動かなくなることを理解せずに変更することはおすすめできません。/files/のURLが動作しない場合、.htaccessやあなたのサーバーのhttpd.confなどの設定ミスが想定できます。

プラグイン

プラグインはネットワーク間の実装の依存により、プラグインはさらなる柔軟性を得ます。すべてのプラグインはネットワークのダッシュボードからインストールができ、各サイト、あるいはネットワーク全体で有効化できます。

  • サイト固有のプラグイン:サイトの管理者がプラグインを有効化したり無効化したりできます。各サイトのプラグインのページを有効化するためには、ネットワーク管理画面の設定 ->ネットワークの設定から設定を行う必要があります。
  • ネットワークのプラグイン:特権管理者はネットワーク全体でpluginsディレクトリのプラグインを有効化できます。ネットワークで有効化されたプラグインは全サイトで有効です。ネットワークで有効化されたプラグインは各サイトからは隠されます。
  • 必須プラグイン:ネットワーク全体で使用するプラグインはmu-pluginsディレクトリに単一ファイルかサブフォルダに入った形で格納できます。その中のファイルは読まれません。それらのファイルは有効化したり無効化したりできず、常に利用されます。各サイトからは隠されます。

テーマ

テーマは全サイト共通にインストールされます。テーマのコードを編集すると、そのテーマを利用しているすべてのサイトに影響します。WordPress.com Custom CSSプラグインをインストールすることで、他のサイトに影響を及ぼすことなく各サイトでCSSを変更可能です。テーマはネットワーク全体や各サイトごとに有効化することができます。

デフォルトでは、一番新しい「Twenty …」シリーズをすべての新しいサイトのデフォルトのテーマとして利用します。この動作はwp-config.phpdefine('WP_DEFAULT_THEME', 'classic');のようなコードを記述することにより変更可能です。「classic」はあなたのテーマのフォルダ名に差し替えてください。

カテゴリーとタグ

グローバルなターム(つまりネットワークのすべてのサイトで共通に利用するタグやカテゴリー)はWordPress 3.0では利用できません。WordPress MU Sitewide Tags Pagesなどのようなプラグインを用いることにより、複数のサイトや個別のサイトでカテゴリーやタグを管理することができます。

ネットワークタイプの変更

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

ドメインベース(サブドメイン形式)のネットワーク
define( 'SUBDOMAIN_INSTALL', true );
パスベース(サブディレクトリ形式)のネットワーク
define( 'SUBDOMAIN_INSTALL', false );

.htaccessについても新しい設定に変更する必要があります。

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

Apacheの仮想ホストと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ファイルを必要とします。以下はあなたのサイトルートディレクトリにWordPressを設置した時のサブフォルダ形式とサブドメイン形式の.htaccessの例です。固有のフォルダにインストールした時は、RewriteBaseを適切に書き換える必要があります。

なんども言いますが、これはであり、多くの場合、これで動きますが、すべてのインストールで動くとは限りません。

サブフォルダ形式の例

WordPress 3.0から3.4.2

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [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).*) $1 [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
# END WordPress

WordPress 3.5以降 マルチサイトを3.5以降に始めた場合に限ります。3.4から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.0から3.4.2

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule . index.php [L]
# END WordPress

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]

古いWPMUでの問題

あなたがWordPress MUをサブフォルダ/サブディレクトリにインストールした場合(FTP経由であなたのサーバのルートフォルダにインストールしていない場合) 、画像のライブラリで画像やサムネイルが表示されない問題が起きます。その場合、以下のようなリライトルールを追加する必要があるかもしれません。

RewriteRule ^([_0-9a-zA-Z-]+/)?siteN/files/(.+) wp-content/blogs.dir/N/files/$2 [L]

これをアップロードファイルに関する記述のに設置してください。

ネットワーク管理リンクの場所

ネットワーク管理リンクの場所はWordPressのメジャーリリースのたびに変更され、現在も変更中です。使っているWordPressのバージョンにより、以下の場所に存在します。

  • 3.0 - 「特権管理者」メニュー
  • 3.1 - 管理者ヘッダーにある「こんにちは、○○さん」の隣
  • 3.2 - 管理者ヘッダーにある「こんにちは、○○さん」からのドロップダウン
  • 3.3以降 - 管理者ヘッダーにある「参加サイト」からのドロップダウン

マルチサイトの移転

マルチサイトの移転はシングルサイトの移転よりも複雑です。WordPress マルチサイトの移動をご覧ください。

ネットワークにインポートする

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

最新英語版: WordPress Codex » Multisite Network Administration最新版との差分