WordPressをマルチサイト化する方法

ショップを併設する際にこのサイトをマルチサイト化しましたので、それと同時に今更ながらWordPressのマルチサイト化に関する話題を紹介いたします。

マルチサイト化させることをお考えでしたら、こちらで当ブログの事例と合わせてサクッと解説しておりますので、メリット・デメリットを秤に掛けるサンプルにしていただければ幸いです。

当ブログWPワークスの事例だとマルチサイト化しなくても「WooCommerce」を導入すればいいだけだったんでは? といった声が上がりそうですが、メリットもあるんですよ?

WordPressのマルチサイト化とは

通常のワードプレスサイトをシングルサイトと称すると、それに対してマルチサイトは何やら複雑な印象を持たれる方も多いかもしれません。

  • 1つのワードプレスで複数のサイトを運営(テーマ・プラグインファイルを共有)
  • サイトは(サブドメイン・ディレクトリ)を利用
  • 1つのデータベース

つまり、通常のシングルサイトと同じ環境で、設定変更などをするだけでできてしまうためセットアップの手間が殆ど掛かりません。

※ 一応必要環境としてApacheサーバーの「mod_rewrite」が挙げられています。

ただ、マルチサイト化させる必要があるのかは事前にご確認ください。

一度設定すると元のシングルサイトに戻すことはできませんので、

  • 多目的にサイトを構成したい場合
  • 部署や支社毎に分けるなどの構成にした場合
  • 年毎などにサイトの構成を変えるイベントサイト
  • などなど

マルチサイト化する前に明確な理由があることをご確認ください。

WordPressのマルチサイト化で出来ること

同じワードプレス上で複数のサイトを動かす形になりますので、コアファイルが1つで済み、テーマ・プラグインも同様に共有できます。

Nora
Nora

ええ、テーマやプラグインの更新も1回で済みますので、権限を持つ管理者がアップデートボタンをポチッと押すだけで、同じワードプレスのネットワーク上のサイトのテーマやプラグインの更新が纏めて行えます。

これに加えて、各サイト毎にネットワークにインストールしたテーマやプラグインの有効化を設定できますから、このブログのようにショップを併設するなど、機能・特徴などが異なるサイトを設置する場合は、不要なプラグインを読ませる必要が無くなります。

また、全サイトでそのプラグインを使用したい場合は「ネットワークで有効化」することでそれが可能になります。

メリット

目的毎にサイトを分割出来ますし、そのサイト毎に有効なプラグインを指定出来ますから、余計なプラグインコードなどをサイト毎に取り除くことができます。

このサイトの場合でしたら、「ブログ」+「ショップ」+「テーマのデモ用サイト」など、という構成になっており、「WooCommerce」を「ショップ」のみで有効化することにより、CSS・JSなどのショップ関連のWooCommerceコードが有効化していないサイトではロードされなくなります。プラグインにエンキューされるCSSやJSファイルは、条件指定無く全ページでロードされる場合が多いですし、プラグイン毎にサイト側がその設定を最適化させるのは手間となりますから、目的がはっきりと分かれている場合はマルチサイトのメリットは感じやすいかもしれません。

この他、サブサイトを非公開にして、デモやテストとしても使うことができますし、権限をユーザーに渡すことによって複数人での分割したサイト管理ができるのも魅力です。

デメリット

唯一の問題点がテーマ・プラグインの対応です。このサイトの場合ですと、ちょっと焦ったのがサイトマップです。

Google XML Sitemapsのサイトマップなどを使用してみると分かると思いますが、上手く生成してくれるサイトマップ用のプラグインを探すのが面倒で、「これだ!」と思うプラグインが見つかりにくいです。

恐らくマルチサイト対応していないものが多いと思われます。

どうしようかと色々試していたのですが、探すのも面倒になってきてJetpackのサイトマップを有効化しました。

ええ、Jetpackのサイトマップはマルチサイト対応しております。

ただ、「WooCommerce」商品のサイトマップは生成されませんでしたので、カスタム投稿タイプに関しては別に設定する必要がありそうです。

マルチサイトのURL設定

一番の懸念がやはりパーマリンクの設定です。

特に既存のワードプレスサイトをマルチサイト化する場合には気をつける必要があります。

まずはマルチサイト化する前にバックアップを取って置き、リダイレクト設定する用意を忘れないようにしましょう。

Nora
Nora

ええ、僕は忘れてましたけどね_(┐「ε:)_

例えば、このサイトの例を挙げると、元シングルサイトをマルチサイトでのメインサイトとし、投稿ページのパーマリンクのスラッグに「blog/」が追加されたりします。

僕はもう設定するのも面倒ですから放置してますが、SEO的には超マイナスです。

検索エンジンに登録されていたインデックスが一気にリンクエラーになりますので、必ずリダイレクト設定をしておきましょう。

プラグインでリダイレクト設定できるものがあります。

関連プラグイン:Redirection

サブドメインor ディレクトリ「domain.xyz/dir」

2つ目以降に追加したサイトをサブサイトと呼称すると、最初指示通りにマルチサイト化した後、サブサイトを追加する際にスラッグ(URLの一部となる文字列)を設定しますが、これがサブドメインの頭に使用されるように設定されます。

  • サブドメイン:subdomain.domain.xyz
  • サブディレクトリ:domain.xyz/subdir/

これらのどちらか一方を使ってサイトを追加していく形となり、セットアップし直すには再インストールが必要になると書いてあるのですが、最近ショップの併設のために僕がマルチサイト化しようとした際は、この選択肢が出て来ず、サブドメイン一択でした。

ただ、これはパーマリンクの重複を回避するためであって、作成するサイトのスラッグがページのスラッグと被らないことが確認できれば、ワードプレスのファイル編集をすることで設定変更が完了し、スラッグがディレクトリに使用されるように設定することが可能となります。

余談ですが、以前は、マルチサイト化する際に「サブドメイン」か「ディレクトリ」のどちらを使用するかを選択し、それに応じて「.htaccess」にコピペするコードが表示されていました記憶があります。今は「ディレクトリ」を使用したい場合、重複回避のために一度サブドメインを設定してから、重複がないか確認した後で「ディレクトリ」を使用するように設定する形になっていました。

サブドメインを使用する場合はSSL設定を忘れずに

サーバーにより設定方法は異なるかも知れませんが、例えば、Xサーバーでは元となるドメインのSSL化が設定されていても、サブドメインは個別に設定する必要があります。

マルチサイト化する処理方法

サーバーのワードプレスのルートにあるファイルの編集をする必要がありますが、その処理は大まかに以下の2つです。

  • 「wp-config.php」を2回
  • 「.htaccess」を1回

編集する際に注意しなくてはいけないのが後者です。

必要なコピペをする作業だけですが、「.htaccess」は外部からのサイトへのアクセスを操作するファイルですので、間違いのないように慎重に行う必要があります。

他にもやることはありますが、あとは管理画面で指示に従いながらポチポチクリックするだけで完了しますので、難しそうだと思われていた方でも、作業をリストアップしてみると結構簡単に感じていただけるでしょう。

では、マルチサイト化セットアップするにはプラグインを全て無効化する必要がありますので、プラグインページへ移動して無効化しておきましょう。

1. 「wp-config.php」を編集

テキストエディタで「wp-config.php」を開くと、「/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */」という文言が見つかると思いますので、以下のコードをその上に追記します。

define ('WP_ALLOW_MULTISITE', true);

これにより、ワードプレスがマルチサイト化することが許可された状態となりますので、サーバー上で保存されたことを確認して次の処理へ。

2. 管理画面でマルチサイトに切り替え

1の「wp-config.php」の編集を終えた後、管理画面に移動すると、「ツール」->「ネットワークの設置」というページが現れますので、切り替えても良いと判断したなら、そのページに移動します。

このページで本来なら「サブドメイン」あるいは「サブディレクトリ」の選択肢が用意され、それを選択してマルチサイト化することを決定しますので、ひとまず選択肢が出てきた前提で解説していきます。

次に進むと

  • 「wp-config.php」に追記するコード
  • 「.htaccess」のワードプレスコア設定(シングルサイト用)に代わるコード

が表示されますので、サーバー上のファイルを編集します。

「wp-config.php」に追記するコード

恐らく以下の様なコードが出てくると思います。

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'your-domain.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

これを「define (‘WP_ALLOW_MULTISITE’, true);」と書いた後にコピペするだけです。

「.htaccess」の編集

恐らく表示されたのは以下のようなコードだと思われます。

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)$ $1 [L]
RewriteRule . index.php [L]

これを元々あったワードプレスのシングルサイト用のコードと入れ替えます。

こちらはワードプレスのシングルサイト用のコードは以下のような形です。

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

気を付けていただきたいのが、このファイルにはサーバー由来の設定コードや、プラグインにより追記されたコードが含まれている場合がある点です。

編集箇所はWordPressコアによるシングルサイト用の設定部分だけですので、関係無いコードまで削除して入れ替えないようにしましょう。

WordPressコアによるコードは、

# BEGIN WordPress
<IfModule mod_rewrite.c>

</IfModule>
# END WordPress

に囲われていますので、その中だけを入れ替えます。

サブディレクトリの利用

「サブドメイン」と「サブディレクトリ」の選択肢が出てこなかった場合ですが、「wp-config.php」に追記するコードを少し編集する必要があります。

追記したコードの二行目に

define('SUBDOMAIN_INSTALL', true);

というコードがありますが、これを

define('SUBDOMAIN_INSTALL', false);

に編集してください。

この固定値がサブドメインを使用するかどうかの設定値となります。

3. 再度ログイン

ファイルの編集が完了すると、ログアウト状態となっていますので、再度ログインする必要があります。

あとは、「サイト」->「新規追加」で指定した「サブドメイン or サブディレクトリ」にサイトを追加することができます。

管理画面「サイト」- data-recalc-dims=「新規追加」” class=”wp-image-3851″/>
管理画面「サイト」->「新規追加」

サブディレクトリ名、タイトル、言語、メールアドレスを入力するだけです。

追加が完了すると、サイト一覧でサイトが追加されていることが確認できるようになります。

※ 「特権管理者ユーザー」であっても、「特権管理者ユーザー」が管理者ユーザーとしてサイトに登録されていない場合は、「特権管理者」としてログインしている時に、「管理ナビバー」->「参加サイト」の一覧に追加したサイトが表示されませんので、「ネットワーク管理」ページにて「サイト」->「全てのサイト」にて特権管理者ユーザーを管理者として追加する必要があります。

マルチサイト化した後の設定

いくつかシングルサイトと勝手の異なる部分があり、その代表的な例として、アップロードするファイルのサイズと種類があります。

シングルサイトでは編集ページなどでもドラッグドロップで簡単に何でも放り込めると思いますが、マルチサイト化した後では、ネットワーク設定によりこれらに制限設定を加えることができるようになっており、デフォルトでファイルサイズが1.5MB(ファイルサイズはうろ覚え)やその種類(拡張子zipなど)などが設定されていますので、ファイルがアップロードできない場合があります。

解決方法は「サイトネットワーク設定」というページがありますので、そこで任意の値に設定し直す必要があります。

背景などに大きなサイズのメディアファイルを使用する場合も考えられますから、使っている内に気づくとは思いますが、知っておくと焦らずに済みますので書いておきます。

念のためにドキュメントページへのリンクも貼っておきますが、ブログを書きながら改めて確認したところリンクがいくつか消えている箇所が確認できました。

その都度設定方法をご確認いただくのが最も無難だと思いますし、そもそもマルチサイト化が本当に必要なのかを検討しておく必要がありますので、不要であれば気にしなくてシングルサイトのままで大丈夫です。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください