概要

1つのWordpressプログラムで複数のblogを運用したい人向けの記事です。

WordPress3.0以降は、Wordpress自体に複数のブログを構築できるようになっているので、この記事の方法ではなく、Wordpress自体の機能を利用した方がよいかもしれません。

この記事で紹介する方法では、.htaccessを設置できる or サーバ上でシンボリックリンクを張れることが前提です。

この方法なら数行の変更と1つの小さな設定で新たなblogを構築できます。

アプローチ

WordPressはblogの記事や設定値をデータベースに入れて保存しています。HTTPでアクセスしてきた時に、指定されたURLのpathによってWordpressが参照するテーブル(データベース)の場所を動的に変えることにより1つのWordpress設置で、複数のWordpressのblogを構築できます。

設定

アクセスされたURLのpathとテーブル名の関連付けを行います。
編集するファイルは、Wordpress管理ディレクトリのトップにあるwp-config.phpです。

下の例は、

http://matsu.tymy.net/blog/

をメインとして運用して、

http://matsu.tymy.net/milklog/

をサブとして運用する場合の例です。

/blog/でアクセスされた場合は、テーブルのプレフィックス(先頭語)にデフォルトである”wp_”を利用します。
/~matsu/milkblog/でアクセスされた場合はプレフィックスに”wp_milklog_”を利用します。

$prefix_arrayは連想配列です。キーにURIを定義し、値に利用するテーブルのprefix($table_prefixに代入する値)を定義します。以下にdiffを載せておきます。

% rcsdiff -r1.1 -r1.3 wp-config.php
===================================================================
RCS file: RCS/wp-config.php,v
retrieving revision 1.1
retrieving revision 1.3
diff -r1.1 -r1.3
17a18,31
> // determine table prefix according to the REQUEST_URI
> $prefix_array = array(
>   '/~matsu/milklog' => 'wp_milklog_'
> );
>
> if($prefix_array){
>   $uri = $_SERVER['REQUEST_URI'];
>   foreach($prefix_array as $search_uri => $search_table_prefix){
>     if(strpos($uri, $search_uri) === false){ continue; }
>     $table_prefix = $search_table_prefix;
>   }
> }
>
>

次に、指定されたpathでアクセスできるように設定します。
2種類の設定方法があるのでどちらかを選択してください。SSHでログインできない場合は.htaccessによる設定を選んでください。

1 シンボリックリンク

指定したpathでアクセスしたときに、Wordpressのファイルを参照するようにシンボリックリンクを張ります。
1つめの引数にWordpressの実態、2つめの引数に新たに追加するblogのpathを指定します。

# wordpressが設置されているディレクトリの上で。
% ln -s blog milk_log

2 .htaccess

新たなpathでアクセスされたときにWordpressの実体へアクセスするようにする.htaccessです。
以下に例を載せておきます。

RewriteEngine on
RewriteBase /~matsu/

# rewrite milk blog
RewriteRule milklog/(.*) /blog/$1
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule milklog/(.*) /blog/index.php [L]
# /end of rewrite milk blog

アイディア元はこちら。
http://ameblo.jp/curiouseverything/entry-10167447535.html

新しいblogの設定

新しいblogのwordpress管理画面へアクセスするとblogの初期設定を行う画面が表示されます。

例:

http://matsu.tymy.net/milklog/wp-admin/

注意

WordPressによって保存されたファイル、例えばSitemapのXMLファイルなどはデータベースではなくファイルに保存されます。よって、sitemapのファイル名は各blogで別にしなければなりません。
(sitemapやrobots.txtはWebサーバ側でrewriteまたはaliasmatchしてあげるのがいいです)

WordPress2.5以降で動作確認しています。Wordpress3.3でも稼働しています。
Wordpressのアップグレードに影響されない普遍性の高い設定なので、おすすめです。

hatena Wordpressによる複数blog運用。(10行追加+α)
 Wordpressによる複数blog運用。(10行追加+α)
article clipper Wordpressによる複数blog運用。(10行追加+α)
btn logo 16 Wordpressによる複数blog運用。(10行追加+α)

関連記事