WordPress 複数ドメインでマルチサイト機能を使う方法
やりたかった事
- 1つのWPで複数のサイトを管理したい。
- 1つのドメインのサブディレクトリやサブドメインではなく、複数のドメイン毎にWPサイトを用意したい。
- WPのバージョンは4.0を使用する。
WPのマルチサイト機能について
マルチサイト機能とは、1つのWPのインストールで複数のサイトを管理できる機能です。普通は1つのサイトに1つのWPをインストールして使用するケースが多いと思いますが、この機能を利用すると複数のサイトを1つのWPで管理出来ちゃうというわけです。
バージョン3.0以降のWPでマルチサイト機能使用できます。
1つのドメインに対してのサブディレクトリ型、サブドメイン型のマルチサイト機能が用意されています。複数ドメインでのマルチサイト化にはプラグインが必要です。
- サブディレクトリ型 (http://test.com/blog01/、http://test.com/blog02/)
- サブドメイン型 (http://blog01.test.com/、http://blog02.test.com/)
- 複数ドメイン型 (http://blog01.com/、http://blog02.com/)
当記事は複数ドメインを使用しての方法のメモですので、サブディレクトリ型、サブドメイン型に関しては若干手順が異なります。
自分が調べた限りでは、サブディレクトリ型、サブドメイン型でマルチサイト運用しているところが多いのかなという印象でした。
WPの公式サイト等ではそれらを「ネットワーク」と読んでいたりもするので言葉がややこしいですが、マルチサイトとほぼ同じ意味っぽいです。
>>ネットワークの作成 – WordPress Codex 日本語版
>>複数のブログをマルチサイトに移行する – WordPress Codex 日本語版
WPマルチサイト化までの下準備
WPのインストール
すでにインストールされている場合はそのままそれを利用すれば良いですし、新規の場合は普通の手順でインストールします。
※今回のようにサブディレクトリ型やサブドメイン型ではなく、複数ドメインで運用したい場合は必ずルート階層にインストールする必要があります。後述するマルチドメイン化のためのプラグインがルート階層以下の階層にインストールした場合は動きませんでした。
また、今回はWP4.0を使用しています。他バージョンでの検証はしていないので、表示される画面や文面等、若干の違いはあるかもしれません。
プラグインを無効化しておく
新規でインストールした場合はプラグインは全て無効化されていると思いますが、既存のものを利用する場合、作業が終わるまで一旦すべてのプラグインを無効化しておきます。
無効化しておかないと後の作業の流れの中で「プラグインを無効化してください」みたいなエラーが出ます。
ファイルのバックアップをとる
全体のバックアップは勿論なのですが、マルチサイト化のために編集するファイルが2つありますので、それらは必ずバックアップをとるようにします。
- wp-config.php
- .htaccess
編集が必要になってくるのは上記2つのファイルのみです。なんかミスったけど元に戻せないとオロオロする前に、必ずバックアップを取っておいた方が良いと思います。
マルチサイトの定義
マルチサイト化のために、まず wp-config.php にマルチサイトを定義します。
wp-config.php の最後の方にコメント化されてる部分に
「/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */」
というのがあると思います。英語版なら「/* That’s all, stop editing! Happy blogging. */」
その上に下記1行を追加します。
define (‘WP_ALLOW_MULTISITE’, true);
この1行を追加することで、マルチサイト機能が使えるようになります。管理画面の「ツール」の中に「ネットワークの設置」というメニュー項目が追加されていればOKです。
ディレクトリを1つ用意する
「blogs.dir」という名前のディリクトリを/wp-contents 内に作成しておきます。今行っている設定作業が完了するまではなくても作業完了するのですが、マニュアルによると
このディレクトリは追加するサイトのアップロードメディアの格納に使うので、通常のアップロードディレクトリと同様に、WordPressがファイルを書き込めるようパーミッションを変更してください。
>>ネットワークの作成 – WordPress Codex 日本語版
とのことですので用意しておいた方が良いのだと思います。(まだそこまでテストしてないです。ごめんなさい。)
ネットワークの作成
上記で追加された「ネットワークの設置」をクリックすると「WordPress サイトのネットワークの作成」というページが表示されます。
このページではサブディレクトリ型にするのかサブドメイン型にするのかの選択やネットワークのタイトル、管理者のメールアドレスの設定などが行えますが、そのページでは複数ドメイン型での運用設定は直接できないです。
が、ここでネットワークを作成しておかないと後でインストールするプラグインが動かないので、一旦何か適当に設定しておきます。
WPのマニュアルによると、ここですることは、ネットワークに追加していく各サイトを、新たな仮想サブドメインとして作成するかサブディレクトリとして作成するかの選択ですが、ここで選択した型は一度設定したら再インストールしないと再設定は出来ませんのでご注意下されとのことです。
とりあえずサブディレクトリでもサブドメインでも良いので都合のよい方を選択してネットワークタイトルとメールアドレスを入力して「インストール」ボタンをクリックしてください。私はサブドメイン型にしました。
する下記のような画面が表示されます。
緑の部分には自分の情報が入ります。
上の枠内のソースを wp-config.php の最後の行近くの「/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */」の真上へコピーペースト。
下の枠内のソースを .htaccess にコピーペースト。
なお、この画面は設定完了後もいつでも確認できます。
それらのコピペ作業が終了すると再ログインしろと言われるので再ログインします。
管理画面が少し変わります
上記設定を終えるて再ログインすると管理画面が若干変わります。
まず管理画面左上に「参加サイト」というボタンが追加されます。
マウスを当てると「サイトネットワーク管理者」というメニューと、登録しているサイトの一覧が表示されます。
サイトの追加等はその「サイトネットワーク管理者」から行います。登録サイトが増えると縦に登録サイトのメニューが増えます。登録しているサイトのメニューをクリックすると、そのサイトのダッシュボードに移動します。
なんていうか、いつも使っているワードプレスの管理画面にもう1段階上の管理画面が追加される感じ。
権限が1つ追加されます
本題からは少し話が逸れるのですが…。
WPには基本的に「管理者」「編集者」「投稿者」「寄稿者」「購読者」という権限が用意されていますが、それに加えてネットワークの管理者には「特権管理者」という権限が付与されます。
各登録サイト内でのユーザー一覧では権限「管理者」として表示されますが、「サイトネットワーク管理者」の中でのユーザー一覧では「特権管理者」として表示されます。
普段「管理者」権限で行っているものも、一部「特権管理者」でないとできなくなるものがあります。
例えば、作成したネットワーク上の登録サイトでのテーマの追加において、まず「特権管理者」がネットワーク上で有効化させないと、各サイトの「管理者」であってもサイトに反映することは出来ません。
ちょっとまだその辺り使いこなせてないので簡単な説明しか出来ないですが、とりあえず「特権管理者」が許可した事の中でのみ「管理者」が自由にできる、というイメージ。
さてさて、まぁまぁ、そんな感じで違いが色々あるんですが、今回は複数ドメインでのマルチサイト化についてがテーマなので、細かい部分は置いておいて、話を進めますね。
複数ドメインでの運用のためプラグインをインストール
複数ドメインでの運用のためにプラグインをインストールします。使用するのは「WordPress MU Domain Mapping」というプラグインです。
使用するプラグイン
>>WordPress › WordPress MU Domain Mapping « WordPress Plugins
一応上記にプラグインのページのリンクを書きましたが、勿論WPの管理画面の「プラグイン」からのインストールでOKです。
「プラグイン」メニューをクリックして検索窓に「WordPress MU Domain Mapping」と入れて検索。
2014年10月6日現在、「お使いの WordPress のバージョンではテストされていません」と表示されていましたが、WP4.0でテストして問題はありませんでした。
インストールが完了したら、プラグインを有効化します。有効化して先ほどの「サイトネットワーク管理者」の管理画面に入ると「設定」メニューの中に「Domain Mapping」「Domains」という項目が増えているのが確認できます。
次にファイルの移動作業です。
プラグインのインストールディレクトリ「wp-content/plugins/wordpress-mu-domain-mapping」内に sunrise.php というファイルがあります。それを「wp-content」ディレクトリへコピーします。2階層上がる感じですね。
元ファイルの場所
wp-content/plugins/wordpress-mu-domain-mapping/sunrise.php
コピー先の場所
wp-content/sunrise.php
次に wp-config.php 内に下記の1文を追加します。コピーする場所の指定は特になかったように思いますが、ファイルの最後にコピーすると「最後に出てくるrequire_once()よりも前に書いてくれ」とエラーが出たので先ほどネットワークの作成時にコピーしたソース達の下にコピーしました。
define( ‘SUNRISE’, ‘on’ );
これでDomain mapping 用のデータベースが作成されました。
先ほど追加された「設定」メニューの中の「Domain Mapping」の画面でなんか色々設定事項が並んでいますが、初期状態で一旦「Save」ボタンを押します。なんか都合悪ければ変更すればOKなのだと思います。
サイトを追加しドメインを設定する
いよいよ他のドメインの追加と設定です。
ここから先はwp-config.php等のファイルの編集はないので閉じてしまってOKです。
サイトを追加する
「サイトネットワーク管理者」の管理画面を開きます。左メニューの「サイト」をクリック。表示されている一覧には最初にインストールしたサイトが1つだけ表示されています。
ここからちょっと回りくどいやり方になるのですが、一旦この画面からサイトをサブドメイン型(ネットワークの作成時にサブディレクトリ型を選択した場合はサブディレクトリ型)で追加しておいて、その後ドメインの割り振り設定をプラグインの方で行います。
ページ上部の「新規作成」ボタンをクリックしてサイトを追加します。サイトのアドレス、サイト名、管理者のメールアドレスを入力して「サイトの追加」をクリック。
そうすると、このように上で確認した左上の「参加サイト」の部分に新しいサイトが追加されているのが確認できます。
また「現在の状況」の部分でも「2サイトと1ユーザーが登録されています」と表示されていますし、左メニューの「サイト」をクリックした後の表示されている一覧にもサイトが追加されています。
追加したサイトのサイトIDを確認する
次に必要になってくるのが追加したサイトのIDです。左メニューの「サイト」から一覧を表示します。ドメインを設定したいサイト名なり「編集」なりにマウスを当ててブラウザのステータスバーを確認するとリンク先URL末尾に「id=○」と数字が表示されます。
そのID番号が必要です。(ステータスバーが出てない場合はサイト名をクリックして次の画面に移り、アドレスバーのURL末尾を確認してもらってもOKです)
ドメインと紐付ける
「設定」>「Domains」をクリックします。
上のDomain Mappingの項目はスルーして、New Domainの項目を埋めていきます。SiteIDには先ほど確認したIDの数字を入力、 Domainには登録したいドメインを入力します。
んでもって「Save」ボタンをクリックすると、その下に登録されたSiteIDとドメインが表示されます。
ドメインの編集や削除はこの画面から「Edit」や「Del」ボタンで行います。
確認する
先ほどサイトの追加を行った「サイト」メニューの一覧を確認すると「Mapping」の項目に設定したドメインが表示されているのが分かります。また登録サイトの名前をクリックしてそのサイトの詳細ページへ移動すると、「サイトの編集:example.com」のようにドメイン名に変更されています。
それぞれのサイトを確認して正しく表示されていればOKです。デフォルト状態では初期のテンプレートが両方に反映されているはずですが、サイト名等で別々のサイトが表示されている事が確認できると思います。
後はそれぞれをカスタマイズ、運用していくだけ、という手順です。
サイトを追加で増やしたい時は上記の「サイトを追加しドメインを設定する」の手順を繰り返して行います。
この記事へのコメントが1 件あります。