WordPressでサイトを作っている人なら一度は耳にしたことがある「マルチサイト」。WordPress用語ではネットワークと言われる機能で、マルチサイトの仕組みや機能を簡単に説明すると
- 1つの管理画面内に複数の子供のサイトを作り、親サイトから管理できるようにする
- 子サイト独自の管理者を設けてそれぞれのサイトを管理させることができる
- 親サイトへインストールしたプラグインを自動的に反映させる、またはインストールだけしておいて有効/無効を各子サイトの管理者に任せることができる
- 親サイトの管理者(特権管理者)は子サイトのすべての操作ができる
といったことができます。
感覚としては無料ブログサービスで簡単にユーザーがブログを作ったりカスタマイズしたりできるような仕組みということですね。
私も長いことWordPressを使っていて、当然マルチサイトというのは知ってはいるのですが、実際に自信で作ってみたことがない(本当に何ができるのか?逆に何ができないのか?をしっかり理解しているわけではない)ので、知識深耕を兼ねて実際に作ってみました。
これからWordPressのマルチサイト化をしたいという方の参考になればという思いで可能な限り詳細な備忘録として公開しますが、何分初めての作成ですので説明が足りなかったりすることもあるかと思いますのでご容赦ください。
マルチサイト化に関してはいろいろなサイトで手順などが紹介されていますが、今回は素直に公式コーデックスネットワークの作成の手順で実行してみることにしました。
- マルチサイト化は既に稼働しているシングルサイトで行うとトラブルになることが多いようですので、今回はサブディレクトリ(multiという名前のディレクトリ)に新規インストールしたシングルサイトに対してマルチサイト化を行いました。
- 公式ページやいろいろなサイトの情報によれば既存のシングルサイトからマルチサイトへの移行で途中まで進行した後元に戻すことは非常に困難なようですので、既存サイトのマルチサイト化をしたいという方は、いざとなったらサイトの再構築(完全削除して再度復元)ができるスキルが必要ですので、再構築に自信のない方は移行は行わない方がいいでしょう。
この記事を見つけて「やってみよう!!」と思った方は、一度すべての内容を見て自身にできるかな?必要な機能なのかな?というのを判断してから作業を進めることわお勧めします。
WordPressをマルチサイト化(ネットワーク化)する手順
シングルサイトのインストール
まずはマルチサイト化する基となるシングルサイトを作る必要があります。これは新たにドメインを取得してWordPressをインストールしてもいいでしょうし、今回のように既存のドメインの中に作ったフォルダ(サブディレクトリ)にWordPressをインストールしてもいいでしょう(今回は後者で行います)。
シングルサイト(親サイト)のインストールは自動でも手動でも好きな方法でいいでしょう。インストールが終わったら一度ログインしてきちんと動作しているかの確認をしておきます。
公式コーデックに書かれていますが、一旦すべてのプラグインを停止しないと不具合が出ることがあるようですから、インストールしっぱなしの状態でマルチサイト化を行います。
マルチサイトとして使えるようにする
単独で機能しているサイトをマルチサイトとして動作させるための設定(正確にはマルチサイトで動作させるための許可)を行います。
これを行うにはサイトのwp-config.phpを開き、
「/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */」
または
「/* That’s all, stop editing! Happy blogging. */」
という記述(wp-config.phpにある上のコメントは前者の日本語の記述の場合と後者の英語の記述の場合があります)よりも上に
define ('WP_ALLOW_MULTISITE', true);
を挿入します。
この段階で???という方は、WordPressのファイルやフォルダの編集などに慣れていない方と推察しますので、マルチサイト化はしない方が無難でしょう
wp-config.phpの編集がきちんとできているかは管理画面(ダッシュボード)をリロードしてみて、「ツール」メニュー内にサイトネットワークの設置という項目が出てくるかで判断できます(下図)。
マルチサイトとして動作するようにする
前項の措置でマルチサイト化できるようになったという前準備が終わりました。
次に行うのは実際にマルチサイト化(親子サイト化)をする設定です。
ここで決めておかなければならないことがあります。それは以下の選択です。
- 追加していく各サイトを、新たな仮想サブドメインとして作成するか
- 追加していく各サイトを、サブディレクトリとして作成するか
前者では、親サイトがhttps://aaa.bb/だった場合、追加するサイトはhttps://ccc.aaa.bb/になり、後者では、親サイトがhttps://aaa.bb/だった場合、追加するサイトはhttps://aaa.bb/ccc/になります。
のどちらにするかということ。これは一回決めて設定してしまったら元に戻す、変更することはできませんから注意が必要です。
この2種類の大きな違いは検索エンジンから見たそれぞれのサイトの扱い方
- サブドメインはすべてのサイトが別々のサイトとして検索エンジンから認識される
- サブディレクトリはすべて親サイトの一部として検索エンジンから認識される
という違いがあります。
※これについては検索エンジンによってバラバラなので確実にそうとは言えないですから参考としてください
今回は結構たくさん問題が発生していると思われるサブディレクトリ型を選択してみることにしました。
・・・とその前にサブディレクトリにインストールしたWordPressをマルチサイト化する場合には「サブディレクトリ」しか選べないようです・・・(下図赤枠内)
まあよく考えたら、サブドメインは今回親サイトをインストールした「/multi」というディレクトリよりも上階層なのでその階層を操作できない(操作する権限がない)のですからサブドメインが選択できないのはすごく普通(逆に操作できたら恐ろしい・・)なんですけどね。
脱線気味だ・・・元に戻して・・・管理画面(ダッシュボード)から「ツール」→「サイトネットワークの設置」を開いて画面を確認し、「インストール」をクリックします。
マルチサイトとして本格稼働させる
最終的に次の画面で出てくるコードを指示通りwp-config.phpと.htaccessファイルへ追記して、マルチサイトを有効化します。
各ファイルへの措置が終わったら再ログインする必要がありますので同じ画面の「ログイン」リンクから再ログインしましょう。
案外すんなりマルチサイト化完了!
再ログインしてみたら子サイトを管理する画面(通常の管理画面とほぼ同じ)が表示され、マルチサイト化は完了しました。
今回行ったのは
- ドメインにWordPressのシングルサイト1つ
- ドメインディレクトリ内に別のディレクトリで稼働するWordPressのシングルサイト1つ
があるちょっと複雑な環境(だからやってみた感もあります)。もしやそれらのサイトに何等かの影響があるのでは?と思ってましたが問題ありませんでした。
何だかもっと苦労するのかなぁ?と思っていましたがちょっと拍子抜け(笑)です。
あとはサイトを追加して複数の子サイトを管理していくだけということになります。
最終 マルチサイトでできること・できないこと
・・・とここまで読むといろいろなことができそうな感じがしますが、実際にできること、できないことをまとめます。
もともとマルチサイトの子サイトはアップロードフォルダ以外はすべてネットワーク管理サイト(ネットワーク管理画面のサイト)のプログラムを使っているだけなので、子サイト独自の・・・というのは原則実現不可能になっていますから、いい面と悪い面が当然ありますね。
子サイトで有効化できるプラグインやテーマはすべてネットワーク管理画面から
マルチサイトにすることで、子サイトの管理者は自由にテーマやプラグインを追加することができません。
基本的にマルチサイトは「ネットワーク管理画面」にアクセスできる【特権管理者】がテーマやプラグインのインストール権限を握っています。つまり「このプラグインは使ってもいいよ!」と許可していくわけですね。
インストールしたものに対して、各子テーマの管理ユーザーが使うか使わないかの選択をするようになっています。
プラグインについて
- ネットワーク管理画面から「ネットワーク有効化」したプラグインはすべての子サイトで強制的に有効になる
- 子サイトの管理者は特権管理者がインストールしたものに対して有効化するか否かの選択ができる
※子サイトの管理者にプラグインをインストールする権限はない - 「ネットワーク有効化」されたプラグインが何なのかは子サイトの管理者は分からない
※子サイトへ特権管理者としてログインした場合のみ表示される - 子サイトの管理者はプラグインファイルへの変更を加えることはできない
という感じの動きや流れになります。
また、この子サイトだけ使えるようにしておくということはできず、基本すべてのサイトに共通のプラグインが表示されます。
マルチサイトで動作しないプラグインは使用できないので、追加できる機能は限られてきます
テーマについて
プラグイン同様に特権管理者がインストールし、「ネットワーク有効化」されたものについて各子サイトの管理者が有効化できるようになっています。
テストしたところ、複数の子サイトで同じテーマを使った場合でもテーマカスタマイザーで変更したものについては各子サイト独自の表示にすることができるようです。
※テーマにマルチサイト対応のものがあるのか?については試していません
総合的に見て、1つのサイトで言語の違うサイトを子サイトとして用意して稼働させるといった使い方や、無料ブログサービスのようにある程度のデザイン変更はできるけどあとは記事を書くだけという機能に限定すれば管理は非常にしやすくなるとは思います。
が、本当に共通の機能、共通のデザインというサイトでなければ自由度が失われるだけですから、シングルサイトをいくつも作って、基準となる(メインとなる)サイトのダッシュボードに各シングルサイト管理画面へのリンクをいれればいい話じゃないかなぁというのが最終的な私の印象です。
時間をかけて作ってみて私的にはちょっと残念でしたが、実際に作ってみることで100%ではないにせよマルチサイトについて理解できたのでいい勉強になりました。