WordPressをマルチサイト化し、1つのドメインで複数のWordPressサイトを構築していく。
コンテンツ
WordPressのマルチサイト化の手順
wp-config.phpを編集する
FTPでサーバにアクセスし、wp-content
フォルダと同階層にあるwp-config.php
をローカルにダウンロードする。
- public.html
- wp-admin
- wp-content
- wp-includes
- wp-config.php // こちらをダウンロードする
- etc…
このとき、万が一に備えてwp-config.php
はバックアップを作成しておく。
編集前のwp-config.php
をエディターで表示すると、およそ87行目のあたりに以下のように記述がある。
/* カスタム値は、この行と「編集が必要なのはここまでです」の行の間に追加してください。 */
/* 編集が必要なのはここまでです ! WordPress でのパブリッシングをお楽しみください。 */
/* カスタム値は、この行と「編集が必要なのはここまでです」の行の間に追加してください。 */
と書かれた行から、
/* 編集が必要なのはここまでです ! WordPress でのパブリッシングをお楽しみください。 */
と書かれた行の間に、
define('WP_ALLOW_MULTISITE', true);
と追記し保存する。
/* カスタム値は、この行と「編集が必要なのはここまでです」の行の間に追加してください。 */
define('WP_ALLOW_MULTISITE', true);
/* 編集が必要なのはここまでです ! WordPress でのパブリッシングをお楽しみください。 */
編集したwp-config.php
はFTPを使用してアップロードし、サーバに上書きする。
以上で、WordPressのマルチサイト機能が有効になる。
ダッシュボードにログインして「サイトネットワークの設置」をクリックする
WordPressのダッシュボードにログインすると、ツール
の配下にサイトネットワークの設置
という子メニューが追加されているので、クリックする。

プラグインを無効化する
サイトネットワークの設置
を表示した時に、有効化されたプラグインがあると、プラグインを無効化するように促され、サイトネットワークの設置
が行えない。

サイトネットワークの設定を行っている間は、すべてのプラグインを無効化する。
WordPressサイトネットワークの作成
プラグインを無効化したら、再度、サイトネットワークの設置
を表示する。

ここで入力する項目は以下のとおり。
ネットワークのサイトのアドレス | サブドメインかサブディレクトリを選択する。あとで変更することはできないので、慎重に検討する。 |
---|---|
ネットワーク詳細 | 下記のように自動的に入力されるが、変更もできる。 |
└サーバーアドレス | WordPress のインストールにアクセスする際に使用するURL のドメイン。 |
└ネットワークタイトル | ネットワーク全体のタイトル。 |
└管理者メールアドレス | ネットワーク全体の特権管理者のメールアドレス。 |
ここでは、サブディレクトリを選択した。入力が完了したら、インストール
をクリックする。
wp-config.phpと.htaccessを編集する
インストールが完了すると、サイトネットワークを有効化中
という画面になる。

まず、wp-config.php
を編集する。サイトネットワークを有効化中
の1.
に表示されたコードを、wp-config.php
に追記する。
/* カスタム値は、この行と「編集が必要なのはここまでです」の行の間に追加してください。 */
define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'XXXXXXXXXX.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
/* 編集が必要なのはここまでです ! WordPress でのパブリッシングをお楽しみください。 */
続いて、.htaccess
を編集するために、FTPでサーバにアクセスして、ルート直下にある.htaccess
をダウンロードする。
- public.html
- wp-admin
- wp-content
- wp-includes
- wp-config.php
- .htaccess //こちらをダウンロードする
- etc…
このとき、念のため.htaccess
のコピーを作成しておく。
.htaccess
をエディターで開き、サイトネットワークを有効化中
の2.
のコードを追記するが、
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
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]
.htaccess
にすでに以下のようなコードが記述されていることが多いので、
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# BEGIN WordPress
から始まる一連のコメントアウトと、
# END WordPress
というコメントアウトの間にあるコードを削除して、サイトネットワークを有効化中
の2.
のコードを貼り付ける。
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
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]
</IfModule>
# END WordPress
編集が完了したらFTPでサーバに上書きアップロードする。
マルチサイト化完了
WordPressのダッシュボードを読み込み直すと、マルチサイト化前にはサイト名が表示されていた左上のテキストが、参加サイト
という表示に変更になっていることが確認できる。

サイトを追加する
参加サイト
をクリックすると、サイトネットワーク管理
が現れ、サイト
を選択すると、サイトを追加することができる。

新しいサイトを追加するためには、サイトアドレス、サイトのタイトル、サイトの言語、管理者メールアドレスを入力して、サイトを追加
をクリックする。

WordPressのマルチサイト化の注意書き
- WordPress アドレス (URL)が
80
または443
以外のポート番号を使用していると、ネットワークを作成できない→バージョンアップによりこちらの制限はなくなった - WordPress はドキュメントルートにインストールされていない場合、サブドメイン型のマルチサイトは構築できない
- WordPress をインストール後、1ヶ月以上経過している場合、サブドメイン型しか選択できない
- ただし裏技的な抜け道もある
https://thk.kanzae.net/net/wordpress/t6762/
- また、マルチサイト化した後に、
wp-config.php
のdefine( 'SUBDOMAIN_INSTALL', true );
とすることでサブドメイン型へ変更できる
- ただし裏技的な抜け道もある
- ネットワーク内の各サイトは、サーバー上に自身のディレクトリを持たないことから「仮想的な」サイトですが、共有されたインストール内にメディアアップロード用の個別ディレクトリと、データベース内に個別のテーブルを持つ
- ネットワークに追加されたユーザーは、ネットワーク内のすべてのサイトの購読者権限を持つ
- 最上位権限は、ネットワーク管理者 (特権管理者)となり、サイト管理者よりも広い権限を有する
- アップロードディレクトリ
- 最初に作成したサイト:/wp-content/uploads/
- それ以降のサイト:/wp-content/uploads/sites/フォルダー下の、データベース上のサイト ID と同じフォルダ内に保存される
- WordPress アドレス (URL)が
80
または443
以外のポート番号を使用していると、ネットワークを作成できない→バージョンアップによりこちらの制限はなくなった - WordPress はドキュメントルートにインストールされていない場合、サブドメイン型のマルチサイトは構築できない
- WordPress をインストール後、1ヶ月以上経過している場合、サブドメイン型しか選択できない

- バー上に自身のディレクトリを持たないことから「仮想的な」サイトですが、共有されたインストール内にメディアアップロード用の個別ディレクトリと、データベース内に個別のテーブルを持つ
- ただし裏技的な抜け道もある
https://thk.kanzae.net/net/wordpress/t6762/
- また、マルチサイト化した後に、
wp-config.php
のdefine( 'SUBDOMAIN_INSTALL', true );
とすることでサブドメイン型へ変更できる
- ただし裏技的な抜け道もある
- ネットワークに追加されたユーザーは、ネットワーク内のすべてのサイトの購読者権限を持つ
- 最上位権限は、ネットワーク管理者 (特権管理者)となり、サイト管理者よりも広い権限を有する
- アップロードディレクトリ
- 最初に作成したサイト:/wp-content/uploads/
- それ以降のサイト:/wp-content/uploads/sites/フォルダー下の、データベース上のサイト ID と同じフォルダ内に保存される
参考
- マルチサイトネットワーク作成の前に
https://ja.wordpress.org/support/article/before-you-create-a-network/ - ネットワークの作成
https://ja.wordpress.org/support/article/create-a-network/ - マルチサイトのネットワーク管理
https://ja.wordpress.org/support/article/multisite-network-administration/ - 複数のブログをマルチサイトに移行する
https://ja.wordpress.org/support/article/migrating-multiple-blogs-into-wordpress-multisite/