WordPress 3.0 から搭載されたマルチサイト機能、出た当初にうれしがって遊んだっきり触ってませんでした。
しかしWPのバージョンアップに伴った諸機能の充実、マルチサイト対応プラグインが増えた ということもあり、そろそろ真面目に触ってみようかなーということで。
マルチサイトとは
端的に読み解くとですね、WordPress をサーバーに一つだけインストールして設定すれば、複数の仮想サイトを作成できる。
っという仕組みです、プラグインやテーマは共用できるので1回入れるだけ。
マルチサイトを使わずに複数サイトを作ろうと思うと、こういうディレクトリ構造になっちゃいますよね。
/www/ ├─wordpress1 │ ├─wp-admin │ ├─wp-content │ └─wp-includes ├─wordpress2 │ ├─wp-admin │ ├─wp-content │ └─wp-includes ├─wordpress3 │ ├─wp-admin │ ├─wp-content │ └─wp-includes ├─wordpress4 │ ├─wp-admin │ ├─wp-content │ └─wp-includes └─wordpress∞ …
しかもそれぞれにテーマとプラグインを入れなきゃいけないという…。
マルチサイト化するメリット・デメリット
とまぁそんなおいしい話ばっかりなわけでなく。
メリットの裏にはやっぱりデメリットもあったり、考えてみました。
メリット
- 複数サイトを運用する時に便利
- サーバーのディレクトリがすっきり
- メンテナンスの手間減
- 使い方、サーバー次第で他の人がブログ開設できたり
デメリット
- 初期設定がちょっとだけめんどう
- マルチサイト非対応プラグインがある
- 既存のサイトをマルチサイト化するのは若干ハードルが上がる
- 慣れないうちは色々と罠に嵌まりかねない
- 別ドメインで運用するときはプラグインで設定しないといけない
こんな感じですかね、既存サイトを切り替えて…っていうのは不意のトラブルに対応できる自信がないとしんどそう。
マルチサイトを設定
さて、やっていきます。
今回マルチサイト化する要件
とりかかったマルチサイトの仕様を一応書いておきます。
WordPress | 3.6.1 日本語版 |
サーバー | さくらレンタルサーバー |
マルチサイト種類 | サブドメインでマルチサイト化 |
構成 | WordPress 新規インストール後 |
ということで、上記条件を前提に始めていきます。
ステップ0: 始める前に
おなじみの WordPress Codex。
Codex の通りにやっていきます。
ステップ1: WordPress を準備する
WordPress はインストールしてDB設定やら終わってる段階なことを確認。
既存サイトをマルチサイト化するときはデータベース・アップロードしたファイルのバックアップをとっておくこと。
って書いてますけども、今回は新規なのでスルー。
ステップ2: マルチサイトを有効化
マルチサイト、デフォルトでは定義されていません。
なので wp-config.php
で定義しなきゃいけません、WordPressをインストールしたフォルダ直下にあります。
テキストエディタで開いて、4行追加しました(あとでわかりやすいようコメントを付けておく
<?php /** * WordPress の基本設定 * * このファイルは、MySQL、テーブル接頭辞、秘密鍵、言語、ABSPATH の設定を含みます。 * より詳しい情報は {@link http://wpdocs.sourceforge.jp/wp-config.php_%E3%81%AE%E7%B7%A8%E9%9B%86 * wp-config.php の編集} を参照してください。MySQL の設定情報はホスティング先より入手できます。 * * このファイルはインストール時に wp-config.php 作成ウィザードが利用します。 * ウィザードを介さず、このファイルを "wp-config.php" という名前でコピーして直接編集し値を * 入力してもかまいません。 * * @package WordPress */ // 注意: // Windows の "メモ帳" でこのファイルを編集しないでください ! // 問題なく使えるテキストエディタ // (http://wpdocs.sourceforge.jp/Codex:%E8%AB%87%E8%A9%B1%E5%AE%A4 参照) // を使用し、必ず UTF-8 の BOM なし (UTF-8N) で保存してください。 // ** MySQL 設定 - この情報はホスティング先から入手してください。 ** // /** WordPress のためのデータベース名 */ define('DB_NAME', '****'); /** MySQL データベースのユーザー名 */ define('DB_USER', '****'); /** MySQL データベースのパスワード */ define('DB_PASSWORD', '****'); /** MySQL のホスト名 */ define('DB_HOST', '****'); /** データベースのテーブルを作成する際のデータベースの文字セット */ define('DB_CHARSET', 'utf8'); /** データベースの照合順序 (ほとんどの場合変更する必要はありません) */ define('DB_COLLATE', ''); /**#@+ * 認証用ユニークキー * * それぞれを異なるユニーク (一意) な文字列に変更してください。 * {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org の秘密鍵サービス} で自動生成することもできます。 * 後でいつでも変更して、既存のすべての cookie を無効にできます。これにより、すべてのユーザーを強制的に再ログインさせることになります。 * * @since 2.6.0 */ define('AUTH_KEY', '****************************************************************'); define('SECURE_AUTH_KEY', '****************************************************************'); define('LOGGED_IN_KEY', '****************************************************************'); define('NONCE_KEY', '****************************************************************'); define('AUTH_SALT', '****************************************************************'); define('SECURE_AUTH_SALT', '****************************************************************'); define('LOGGED_IN_SALT', '****************************************************************'); define('NONCE_SALT', '****************************************************************'); /**#@-*/ /** * WordPress データベーステーブルの接頭辞 * * それぞれにユニーク (一意) な接頭辞を与えることで一つのデータベースに複数の WordPress を * インストールすることができます。半角英数字と下線のみを使用してください。 */ $table_prefix = 'wp_'; /** * ローカル言語 - このパッケージでは初期値として 'ja' (日本語 UTF-8) が設定されています。 * * WordPress のローカル言語を設定します。設定した言語に対応する MO ファイルが * wp-content/languages にインストールされている必要があります。たとえば de_DE.mo を * wp-content/languages にインストールし WPLANG を 'de_DE' に設定すると、ドイツ語がサポートされます。 */ define('WPLANG', 'ja'); /** * 開発者へ: WordPress デバッグモード * * この値を true にすると、開発中に注意 (notice) を表示します。 * テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。 */ define('WP_DEBUG', false); /** * マルチサイト有効化 */ define( 'WP_ALLOW_MULTISITE', true ); /* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */ /** Absolute path to the WordPress directory. */ if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/'); /** Sets up WordPress vars and included files. */ require_once(ABSPATH . 'wp-settings.php');
定義を追加して保存、サイトの管理画面にアクセスしブラウザのリロードをして次へ。
(ついでに wp-config.php
のパーミッションを404にしておくといいです)
ステップ3: ネットワークを設置
マルチサイトの定義 管理画面 > ツール > ネットワークの設置 という項目が追加されてます。
サブドメインかサブディレクトリを選択、新たに作りたいマルチサイトの名前・管理者のアドレスを入力。
1人だけで管理するならWordPress初期インストール時と同じメールアドレスを入力すればいいです。
しっかり確認してインストールをクリック
ステップ4: ネットワークを有効化
画面が遷移しまして、有効化なう、な画面へ。
「2つやらんといけんことがあるんよ」
ということなのでひとつずつ。
wp-config.php
に指定されたコードを追加。コピペでおk。
ぼくは律儀にコメントを付けて、さっき定義した下に貼り付けました。
<?php /** * WordPress の基本設定 * * このファイルは、MySQL、テーブル接頭辞、秘密鍵、言語、ABSPATH の設定を含みます。 * より詳しい情報は {@link http://wpdocs.sourceforge.jp/wp-config.php_%E3%81%AE%E7%B7%A8%E9%9B%86 * wp-config.php の編集} を参照してください。MySQL の設定情報はホスティング先より入手できます。 * * このファイルはインストール時に wp-config.php 作成ウィザードが利用します。 * ウィザードを介さず、このファイルを "wp-config.php" という名前でコピーして直接編集し値を * 入力してもかまいません。 * * @package WordPress */ // 注意: // Windows の "メモ帳" でこのファイルを編集しないでください ! // 問題なく使えるテキストエディタ // (http://wpdocs.sourceforge.jp/Codex:%E8%AB%87%E8%A9%B1%E5%AE%A4 参照) // を使用し、必ず UTF-8 の BOM なし (UTF-8N) で保存してください。 // ** MySQL 設定 - この情報はホスティング先から入手してください。 ** // /** WordPress のためのデータベース名 */ define('DB_NAME', '****'); /** MySQL データベースのユーザー名 */ define('DB_USER', '****'); /** MySQL データベースのパスワード */ define('DB_PASSWORD', '****'); /** MySQL のホスト名 */ define('DB_HOST', '****'); /** データベースのテーブルを作成する際のデータベースの文字セット */ define('DB_CHARSET', 'utf8'); /** データベースの照合順序 (ほとんどの場合変更する必要はありません) */ define('DB_COLLATE', ''); /**#@+ * 認証用ユニークキー * * それぞれを異なるユニーク (一意) な文字列に変更してください。 * {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org の秘密鍵サービス} で自動生成することもできます。 * 後でいつでも変更して、既存のすべての cookie を無効にできます。これにより、すべてのユーザーを強制的に再ログインさせることになります。 * * @since 2.6.0 */ define('AUTH_KEY', '****************************************************************'); define('SECURE_AUTH_KEY', '****************************************************************'); define('LOGGED_IN_KEY', '****************************************************************'); define('NONCE_KEY', '****************************************************************'); define('AUTH_SALT', '****************************************************************'); define('SECURE_AUTH_SALT', '****************************************************************'); define('LOGGED_IN_SALT', '****************************************************************'); define('NONCE_SALT', '****************************************************************'); /**#@-*/ /** * WordPress データベーステーブルの接頭辞 * * それぞれにユニーク (一意) な接頭辞を与えることで一つのデータベースに複数の WordPress を * インストールすることができます。半角英数字と下線のみを使用してください。 */ $table_prefix = 'wp_'; /** * ローカル言語 - このパッケージでは初期値として 'ja' (日本語 UTF-8) が設定されています。 * * WordPress のローカル言語を設定します。設定した言語に対応する MO ファイルが * wp-content/languages にインストールされている必要があります。たとえば de_DE.mo を * wp-content/languages にインストールし WPLANG を 'de_DE' に設定すると、ドイツ語がサポートされます。 */ define('WPLANG', 'ja'); /** * 開発者へ: WordPress デバッグモード * * この値を true にすると、開発中に注意 (notice) を表示します。 * テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。 */ define('WP_DEBUG', false); /** * マルチサイト有効化 */ define( 'WP_ALLOW_MULTISITE', true ); /** * マルチサイトのための定数を定義 */ define('MULTISITE', true); define('SUBDOMAIN_INSTALL', true); define('DOMAIN_CURRENT_SITE', '****'); // 設置するドメインによって違います define('PATH_CURRENT_SITE', '/'); define('SITE_ID_CURRENT_SITE', 1); define('BLOG_ID_CURRENT_SITE', 1); /* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */ /** Absolute path to the WordPress directory. */ if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/'); /** Sets up WordPress vars and included files. */ require_once(ABSPATH . 'wp-settings.php');
次は .htaccess
に指定されたコードを追加( wp-config.php
と同じ階層にあるよ
なんですけども、ちょっとわかりづらいので詳しく。
WordPress のインストール時にそもそも .htaccess
は作られてるんですよね↓
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
で、どこを書き変えるかと言うと、 <IfModule mod_rewrite.c> ~ </IfModule>
の間にあるのを全て置き換えるってことです。
つまりこういう感じ(13行目の *** 部分は各々違いますのでちゃんと指定されたものをコピペしてください
# BEGIN WordPress <IfModule mod_rewrite.c> 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] </IfModule> # END WordPress
ファイルを書き変え、アップロードする必要があるならした後、ログインしなおす。
ステップ5: ネットワーク設定
無事再ログインできたら管理バーに ”参加サイト” が追加されているはずです。
されてない場合何かしら間違ってると思われるのでやりなおしましょう。
ちゃんと出てればOKです。
もはやマルチサイトはその手の中に。
ステップ6: 管理
テーマやプラグインの管理等、必要なものを設定してねーと書いてましたので一例を。
テーマはネットワークから有効化しないとマルチサイトで使えません。
プラグインはネットワークで有効にすると、ネットワーク内のサイトにサイレントで導入されます。
ネットワークから有効にしたプラグインはマルチサイトから停止できません、その代わりネットワーク内のサイト全てに導入されるので、必須プラグインを有効化しておけばいいです。
あとは細かく管理者が設定できるので色々試してみてください。
ホホまとめ
サブドメインでのマルチサイト作成でしたー。
マルチサイトはこれから流行ってくるんじゃないでしょうか?(もしかしてもう流行ってます??
とりあえず、マルチサイトを動かすことでまた新たに知識・技術が向上すればいいなと思います。
ソフトバンククリエイティブ
売り上げランキング: 13,125
WordPress の教科書、参考になると思いますよ。
もう既に各ディレクトリにWPをインストールしてしまったんですが
逆にマルチサイト化しない方にデメリットってありますかね?
完全に別サイトとして動かすのであればマルチサイト化せずともよいと考えています。
マルチサイト化すると対応していないプラグインがあるのが若干のデメリットですかね。
ただ、各サイトの情報を簡単に取得できるのがマルチサイトの強いところでしょうか。
これが一番分かりやすい。
一番分かりやすい!
分かりやすかったです!
わかりやすくて良かったです!
・ステップ4 ***は指定された・・・ ってのがわからず 断念で残念でした。
ほかあたって みます。
「つまりこういう感じ(13行目の *** 部分は各々違いますのでちゃんと指定されたものをコピペしてください」
の説明が理解出来ず断念。。。