WordPressでブログを作成していますが、サイト内に子ブログを作りたいと思ってきました。
前によく使っていたMovabletypeでは子ブログ、孫ブログなどを簡単に作ることができるのが売りでした。
しかし、WordPressもバージョン3.0以降はマルチサイト化に対応し、複数ブログをまとめて管理することができるようになったようです。
それでどのように機能するか試してみたいと思います。
※必ずサイトのバックアップを取っておきましょう。
もし何かトラブルがあっても、サイトを復旧することができます。
まず、WordPressのマルチサイトの機能は管理画面からは隠されています。
マルチサイトを有効にするには設定ファイルを直接編集する必要があります。
WordPressのインストールフォルダにある「wp-config.php」をダウンロードします。
wp-config.phpを開いて「/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */」という行より前に以下のコードを追記します。
1 |
define('WP_ALLOW_MULTISITE', true); |
これで管理画面を読み込みしなおすと、「ツール > ネットワークの設置」という新しいメニューが追加されています。
ここをクリックして設定を開始します。
すると、プラグインを動かしている場合はプラグインを無効化する様に要求されます。
とりあえず全部のプラグインを無効化して設定を勧めます。
プラグインの画面のスクリーンショットを撮っておくと、どのプラグインを使用していたか、使用していなかったか分かりやすいですよ。
上の画面が表示されます。
新規インストール出ない場合、「サブディレクトリインストール」を選択することができません。
サブドメインインストールのみの選択肢となります。
サイトネットワーク名には新しいサイトの名前を入力し、管理者のメールアドレスを入力してインストールを開始します。
サイトのネットワークを作成するためにインストールディレクトリの「wp-config.php」と「.htaccess」に以下のコードを追記する様に指示されます。
wp-config.php
1 2 3 4 5 6 |
define('MULTISITE', true); define('SUBDOMAIN_INSTALL', true); define('DOMAIN_CURRENT_SITE', 'tashumi.link'); define('PATH_CURRENT_SITE', '/'); define('SITE_ID_CURRENT_SITE', 1); define('BLOG_ID_CURRENT_SITE', 1); |
もしサブドメインではなくサブディレクトリでインストールしたい場合は次の項目を変更しておきます。
1 |
define('SUBDOMAIN_INSTALL', false); |
.htaccess
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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] |
これを追記したファイルをアップロードして上書きし、その後画面右下の「ログイン」より再度ログインをすると、マルチサイトが有効となっています。
管理画面に「参加サイト」や「サイト」といった項目が新しく追加されています。
この「サイト > 新規追加」をクリックすると、新しいサイトをサブドメインで追加することができます。
サイトアドレスには任意のサブドメインを、サイトのタイトル、メールアドレスを入力しサイトを追加します。
これで新しいサイトのインストールは完成です。
「サイト > すべてのサイト」をクリックし、サイトが追加されたことを確認します。
確かにサイトが追加されました。
ここから新サイトのダッシュボードにリンクがあるのでクリックしてみたところ、リダイレクトの無限ループになってアクセスできません。
このマルチサイト時のループはよく報告されてい問題のようです。
それで、.htaccess
を次のように変更することでこの問題を回避します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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 ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteRule . index.php [L] |
これで新しいサイトのダッシュボードに入ることができました。
これで思いのままにマルチサイトを楽しもうと思います。