WordPressのマルチサイト化

2022-08-26

複数のWebサイトを運営する場合、それぞれでWordPressをインストールすると管理が大変になります。
そんな時、1つのWordPressで複数サイトを作成・運用することのできる「マルチサイト」という機能があります。

マルチサイトとは

1つのWordPressで複数サイトの作成・運用ができる機能で、テーマやプラグインなどを一元管理することができます。

企業の部門や店舗ごとにサイトを作成する場合や、個人ブログのジャンルごとにサイトを分けたい場合などに向いています。

メリット
  • テーマやプラグインの一元管理
  • サイト管理の効率化
デメリット
  • シングルサイトよりサーバーに負荷がかかる
  • 対応していないプラグインがある

手順

「wp-config.php」を編集する

インストールディレクトリ直下にある「wp-config.php」にマルチサイトを有効化する設定を書き込みます。
「カスタム値は、・・・」というコメントがあるので、指定された行の間に追加してください。

・
・
・
/* カスタム値は、この行と「編集が必要なのはここまでです」の行の間に追加してください。 */

/* マルチサイト化 */
define( 'WP_ALLOW_MULTISITE', true );

/* 編集が必要なのはここまでです ! WordPress でのパブリッシングをお楽しみください。 */
・
・
・

サイトネットワークの作成

WordPressの管理画面にログインし、「ツール > サイトネットワークの設置」を開いてください。
「WordPress サイトネットワークの作成」という画面が表示され、サイトアドレスの形式などを設定できます。

選択・入力が終わったら『インストール』を押してください。

サイトネットワーク内のサイトアドレス

ディレクトリ形式
  • https://example.com/site01
  • https://example.com/site02
  • https://example.com/site03
サブドメイン形式
  • https://site01.example.com
  • https://site02.example.com
  • https://site03.example.com

サイトネットワークの詳細

「サイトネットワーク名」は、マルチサイト全体の管理名を設定できます。

有効化に必要な設定の書き込み

画面の指示に従い、インストールディレクトリ直下にある「wp-config.php」と「.htaccess」を編集してください。
気を付けないといけないのが、「wp-config.php」は追記ですが、「.htaccess」はWordPressルールの部分の置き換えです。

・
・
・
/* カスタム値は、この行と「編集が必要なのはここまでです」の行の間に追加してください。 */

/* マルチサイト化 */
define( 'WP_ALLOW_MULTISITE', true );

define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
define( 'DOMAIN_CURRENT_SITE', 'niwa28.net' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

/* 編集が必要なのはここまでです ! WordPress でのパブリッシングをお楽しみください。 */
・
・
・
・
・
・
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
# RewriteEngine On
# RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# RewriteBase /cms/
# RewriteRule ^index\.php$ - [L]
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule . /cms/index.php [L]
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /cms/
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
・
・
・

再度ログインする

2つのファイルの編集が終わったら、「WordPress サイトネットワークの作成」画面に出ている『ログイン』を押して再ログインしてください。

ログインし直すと、管理画面の左上に『参加サイト』というメニューが表示されます。
これでマルチサイト機能は有効化されました。

SSL化

現段階だと、サイトのURLは「http://~」になっていると思うので、「https://~」で表示されるように設定します。
シングルサイトの場合は簡単に管理画面から設定できますが、マルチサイトでは管理画面からでは設定できなくなっています。

レンタルサーバーのSSL設定を有効化

契約されているサーバーのマニュアルなど見ながら有効化してください。

データベースの編集

  1. phpmyadminにログインし、対象データベースの『wp_options』を開く
  2. 「option_name」が『siteurl』と『home』の「option_value」の値を『s』付きに変更する

これで、親サイトのSSL化ができました。
子サイトをすでに作られている場合は「wp_2options」といった数字付きのテーブルがあると思うので、親サイト同様編集してください。

サイトの追加

「参加サイト > サイトネットワーク管理 > サイト」を開き『新規作成』ボタンからサイトを追加できます。