カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

WordPress マルチサイト化

この記事は最終更新日から1年以上経過しています。

WordPressにはマルチサイト機能が備わっており、1つのWordPressで複数のサイトを管理することができるようになっています。
ここではサブディレクトリ型でマルチサイト化する手順をご紹介します。

WordPressは既にインストール済としてご説明します。
念のため、データのバックアップを取ってから行うことをお勧めします。

※マルチサイト化はメリット・デメリットあり、元に戻すにも少し面倒なので十分検討した上で行ってください。

マルチサイト機能の導入

まず、「wp-config.php」の「/* 編集が必要なのはここまでです ! ~」の前に以下の1行を追加します。

define('WP_ALLOW_MULTISITE', true);

追加したら「wp-config.php」を上書きアップロードします。
アップロードが完了したらWordPressにログインします。

※ここで全てのプラグインを停止します。
停止していないプラグインがあると作業をすることができません。

WordPress管理画面の[ツール]に[ネットワークの設置]という項目が新たに追加されています。
それをクリックします。
「WordPressサイトのネットワークの作成」というページが表示されます。

[ネットワークのタイトル]には任意のタイトルを入れてください。
[サイトネットワーク管理者のメールアドレス]には、これまでの管理者メールアドレスで問題がなければ同じものを入力してください。
[インストール]ボタンをクリックします。

「ネットワークを有効化中」という画面が表示されると、「wp-config.php」と「.htaccess」ファイルに追記する内容が表示されます。

「wp-config.php」の「/* 編集が必要なのはここまでです ! ~」の前に以下のコードを挿入します。

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'www.example.jp');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

今回はサブディレクトリ型なので、「SUBDOMAIN_INSTALL」は「false」に変更します。

次に、「.htaccess」ファイルのWordPress用の設定を以下の内容で置き換えします。

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]

修正が終わったら2つのファイルをアップロードします。
アップロードが完了したら、一旦ログアウトし再度ログインします。

これにてマルチサイト機能の設定は完了です。

サイトを追加する

マルチサイト機能の設定ができたので、サイトを作成してみましょう。

ダッシュボード左上の[参加サイト]から、[サイトネットワーク管理者]-[サイト]と表示させ、クリックします。
「サイト」のページが開いたら「新規追加」ボタンをクリックします。

サイトのアドレス、サイト名、管理者メールアドレスを入力し、「サイトを追加」ボタンをクリックして作成完了です。
※サイトのアドレスにはpage, comments, blog, files, feedなど、他と重複するものは使用できません。

最後に、再度「.htaccess」ファイルを修正する必要があります。
[ネットワークの設置]画面に行くと「.htaccess」用の設定内容が変更されていると思いますので、それを再度置き換えします。

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-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]

以上で作業は完了なのですが、実はまだ落とし穴があります。
ここまでの設定でいくと、パーマリンクがおかしくなっています。
原因はわかりませんが、なぜかパーマリンクに「/blog」が挿入されてしまいます。

例えば
http://www.example.jp/%category%/%post_id%/
としたいのに
http://www.example.jp/blog/%category%/%post_id%/
となってしまっています。

これを解消するには、一旦サイトのパーマリンクをデフォルト設定に戻します。
次に[参加サイト]-[ネットワーク管理者]-[サイト]から該当サイトの[編集]をクリックします。
[設定]タブをクリックします。
設定の中に「Permalink Structure」という設定がありますので、そこに設定したいパーマリンクを設定します。
例でいくと「/%category%/%post_id%/」。
これで意図したパーマリンクになるはずです。

※設定したサイト自身の管理画面でのパーマリンクでは相変わらず「/blog」が表示されますが、動作自体は問題ないので気にしないでください。

マルチサイト化したWordPressではテーマファイルも共有できます。
その際、画像パスの指定の仕方によっては画像が表示されない場合がありますので、絶対パスになるようにしましょう。

参考URL:http://wp.fsv.jp/guide/multisite-subdirectory/
参考URL:http://webdesignerwork.jp/WordPress/multisite_blog/
参考URL:http://hayashikejinan.com/WordPress/638/

参考URL:http://mypacecreator.net/blog/archives/1457
参考URL:http://kotori-blog.com/WordPress/permalink_custom/

この記事がお役に立ちましたらシェアお願いします
1,822 views

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です