WordPressでマルチサイトを設置した時のメモ
サイト構成
次のような構成で、WordPressの管理画面の設定からサイトが/webroot
で表示されるように変更しました。
/webroot |- .htaccess |- index.php |- /wordpress |- wp-config.php
マルチサイトの設定
1. wp-config.php にマルチサイトを使用可能にするコードを追加
/wordpress/wp-config.php
にマルチサイトを可能にする設定を/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */
コメントの上に追加
define ('WP_ALLOW_MULTISITE', true);
2. プラグインを全て無効にする
プラグインが有効になっているとネットワークのインストールが出来ないので、プラグインを有効にしている場合は一度全て無効にする必要があります。
3. ネットワークのインストール
WordPress管理画面をリロードすると設定 > ツール
に「ネットワーク」が追加されているので「ネットワーク」を選択。
サブサイトの運用を「サブドメイン型」にするか「サブディレクトリ型」にするかを決めます。
レンタルサーバーの場合「サブドメイン型」にするとサブサイトを作る度にドメインの設定を行わなければならない場合もあるので「サブディレクトリ型」にした方がメンドーは無いかもしれません。
既に運用としているWordPressサイトをマルチサイトにする時は固定ページなどでディレクトリの割当がされているせいか「サブドメイン型」しか選択できなくなるようです。
サイトのネットワーク名・マルチサイト全ての管理者(特権管理者権限)アカウントになるサイトネットワーク管理者のメールアドレスを確認します。
ネットワークの設定を1度行うとDBが変更されてしまうので修正するにはDBを初期化してWordPressを再インストールする必要があります。
設定に問題がなければ「インストールボタン」をクリックしてマルチサイトが使用できるネットワークをインストールします。
4. サイトネットワークの設置
ネットワークのインストールが完了するとwp-config.php
とサイトのトップ(index.phpのある階層)にある.htpaccess
を変更する指示が出るので、これを各ファイルにコピペしていきます。
/wordpress/wp-config.php
1.で追加したコードの下に表示されたコードをコピペします
define ('WP_ALLOW_MULTISITE', true); define('MULTISITE', true); // マルチサイトにする: true define('SUBDOMAIN_INSTALL', false); // サブドメイン型: true サブディレクトリ型: false define('DOMAIN_CURRENT_SITE', 'example.com'); // サイト全体のトップドメイン define('PATH_CURRENT_SITE', '/'); // メインサイトのパス define('SITE_ID_CURRENT_SITE', 1); // メインサイトのID define('BLOG_ID_CURRENT_SITE', 1); // メインブログのID (将来的に複数のブログが管理できるようになるっぽい?)
wp-config.php
の変更が完了したらパーミッションを400
に変更しておきます。
次に、サイトトップに当たる階層にある.htpaccess
に表示されたコードをコピペします。
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).*) wordpress/$2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ wordpress/$2 [L] RewriteRule . index.php [L]
この時 BEGIN WordPress
で始まるWordPressが出力していた設定があるとリダイレクトループが発生してサイトが表示されなくなります。
注意書きにある通り「他のWordPress ルールを置き換えてください」とあるので、これを削除してしまうかコメントアウトします。(コメントアウトの方が万が一の時に戻しやすいかもです)
# BEGIN WordPress # <IfModule mod_rewrite.c> # RewriteEngine On # RewriteBase / # RewriteRule ^index\.php$ - [L] # RewriteCond %{REQUEST_FILENAME} !-f # RewriteCond %{REQUEST_FILENAME} !-d # RewriteRule . /index.php [L] # </IfModule> # END WordPress
5. 管理画面に再ログイン
wp-config.php
と.htpaccess
の変更が完了したら、管理画面をリロードするとログアウトしているので、3. で決めた特権管理者権限のアカウントでログインできればマルチサイトの設定は完了です。
ログインボタンを押した時にログイン画面にリダイレクトされてしまう場合は、一度Cookieを削除するとログインがログインが出来るようになるようです。
wp-config.php
に追加した define('MULTISITE', true);
の値をfalse
にするとDBやマルチサイトのデータを残したまま、マルチサイトでないメインのサイトだけの状態に戻すことが出来るようです。
但し、テーマ内にget_blog_details()
の様なマルチサイトの時しか使えない関数があるとエラーになるので注意が必要です。
FYI: https://codex.wordpress.org/Function_Reference#Multisite_functions
[参考]
- ネットワークの作成 - WordPress Codex 日本語版
- WordPressマルチサイトのメリット・デメリット・設定方法 | 株式会社ベクトル | 名古屋でWordPressを活用したウェブ制作・システム開発
- WordPressをマルチサイトに対応させる場合の注意点|ふにろぐ
- Function Reference - #Multisite_functions | WordPress Codex

本当によくわかるWordPressの教科書 はじめての人も挫折した人も本格サイトが作れる
- 作者: 赤司達彦
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2018/02/17
- メディア: 単行本
- この商品を含むブログを見る