Wordpressによる複数blog運用。(10行追加し、シンボリックリンクを張る)
こんな人向け
- 1つのWordpressで複数のblogを運用したい。
- ここに複数運用するための手順がいろいろ紹介されているけど、どれもめんどくさい。
- Wordpress-MUは、Wordpress用のプラグインが使えなくなるので、使いたくない。
- 日本のblogで紹介されている手法は、blogごとにWordpressの管理ディレクトリが作成されてしまって気持ち悪い。
- サーバ上でシンボリックリンクを張れる。
私がとったアプローチは、アクセスされてきたpathに応じてテーブル名を動的に決定する手法。 公式サイトに紹介されている内容は大がかりなので、自分で書いちゃいました。
Wordpress管理ディレクトリのトップにあるwp-config.phpに10行程度を追加して、あとはシンボリックリンクを張るだけです。
下の例は、
http://www.tymy.net/~matsu/blog/ をメインとして運用して、 http://www.tymy.net/~matsu/milklog/ をサブとして運用する場合の例です。
/~matsu/blog/でアクセスされた場合は、テーブルのプレフィックスにデフォルトである”wp_”を利用します。
$prefix_arrayは連想配列です。キーにURIを定義し、値に利用するテーブルのprefix($table_prefixに代入する値)を定義します。以下にdiffを載せておきます。Wordpressをアップグレードするときに上書きしないように気をつけてくださいな。
% 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;
> }
> }
>
>
※注意
WP-Sitemapで出力するファイル名はそれぞれのblogで別々の名前にしないといけません。
Wordpressの管理ディレクトリ1つに対して1つのサービスを提供するプラグインはうまく動きません。たとえば、robots.txtの配置などです。
これの目的は、みるくのブログを作るためなんだけどね。
Wordpress 2.5でも問題なく利用できています。
Wordpress 2.6でも問題なく利用できています。























yuki said
am 3月 6 2008 @ 22:11:06
こんにちは、はじめまして。
Wordpressで一つの管理画面で複数blogを運用したくて、
情報を探していてたどりつきました。
初心者のため、まつぼっくりさんの方法を試してみたのですが、
うまくいきません。もう少し詳しく教えてもらえませんか?
wordpressは二つインストールする必要があるんですか?
とても初歩的な事をきいているとは思うのですが、とても困っていて
お返事をいただきたいです。宜しくお願いします。
matsu said
am 3月 7 2008 @ 4:25:34
yukiさん
はじめまして。
コメント書いてくださってありがとうございます。
wordpressは2つインストールする必要はありません。この点が、この記事で書いた方法の利点です。
記事の最初の方にある「こんな人向け」の各項目を理解できるレベルが前提なのですが、こちらの方はクリアですか?
yuki said
am 3月 7 2008 @ 11:31:13
matsuさん
お返事ありがとうございます。
はい、シンボリックリンクという言葉は初めて知りましたが、そのほかは理解できます。
ご説明いただくにどの程度までWordPressの事を私が知っているか必要なんだと思いますが、テンプレートを使わずにページやカテゴリーを作成して10ページ程度のwebサイトを作りました。
ご存じか分かりませんが、毎日コミュニケーションズ出版のWordpressサイト構築スタイルブックの内容が理解できる程度です。
webデザインをメインにしているので、あまりphpの事には詳しくはありません。
matsuさんの方法を理解するにはphpが基本理解できないと難しいですか?
matsu said
am 3月 7 2008 @ 23:03:27
yukiさん。
前提スキルの説明ありがとうございます!
そして、前提となるサーバ環境も重要です。
以下の条件はクリアしてますか?
> サーバ上でシンボリックリンクを張れる。
シンボリックリンクを作れないとこの記事にある手法は使えます。
もし、シンボリックリンクを張れるのであれば、PHPのスキルはさほど必要ありません。
以下の手順で行うのがいいと思います。
1.Wordpressをセットアップ。blogも作る。
2.別のblog用のシンボリックリンク作成
3.wp-config.phpをこの記事に従って編集。
buckeye said
am 5月 15 2008 @ 12:38:39
エントリーをお書きになってからだいぶ時間が経っていますが、質問させて下さい。
この方法で複数のblogを運用した場合、WordPressの設定は複数出来るのでしょうか。例えば、ブログタイトル・キャッチフレーズなどです。”ネザーランドドワーフのみるくです!”も拝見したところ、設定できているようでしたので。
よろしくお願いします。
matsu said
am 5月 15 2008 @ 13:38:45
buckeyeさんコメントありがとうございます。
この方法の場合、複数できますよ。
wordpressは設定をデータベースのテーブルへ保存しています。この方法はblogごとに違うテーブルを利用するため、blogごとに独立した設定を行えます。
buckeye said
am 5月 16 2008 @ 9:53:32
matsuさん早速お返事頂きありがとうございます。
なるほど、設定もデータベースに保存されるんですね。MySQLの中身をちょっと覗いてみて感動しました。
先に確認しておくべきでした。
実際にこの方法を採用しようと思ったのですが、何がわかっていないのかはっきりしました…シンボリックリンクはどこからどこへ張ればいいのですか?
このエントリーの内容だと、こんな感じですか?
ln -s blog milklog
matsu said
am 5月 16 2008 @ 13:45:15
シンボリックリンクは提示していただいた内容でOKです!
フォーマットはこんな感じです。
snt-f said
am 6月 23 2008 @ 11:39:55
matsu様、はじめまして。
上記の情報ありがとうございます。
ただ、ちょっとつまずいていまして、ご教示いただきたく存じます。
wp-config.phpに追記して、シンボリックリンクは張れたのですが、WordPressにアクセスすると、新規のユーザー扱いになってしまいます。
ユーザーはあらかじめ作っておくモノなのでしょうか。。
やりたいこととしては、MTのホスティングライセンスのようなイメージです。ただ、投稿するのは特定のユーザーのみですので、ユーザー登録などは裏側で追加する運用で問題ありません。
よろしくお願いします。
matsu said
am 6月 23 2008 @ 13:31:48
snt-fさん。
Wordpressではユーザ情報はデータベースへ格納されます。この記事の方法を実践すると、データベースは各blogごとに作成されます。
ホスティングサービスとして運用するならば、blogの定義を追加するとともに、ユーザアカウントを追加する必要がありますね。
がんばってっください
snt-f said
am 6月 23 2008 @ 21:08:32
matsu様
返信ありがとうございます。
ただ、ちょっとわからないのですが、
> blogの定義を追加するとともに、ユーザアカウントを追加する必要がありますね。
上記のそれぞれのやり方がわからないのですが、ご教示いただけませんでしょうか。
ユーザーアカウントは、普通にwp-adminで作成するものなのでしょうか。また、そのユーザーのブログの定義はwp-config.phpで 設定したシンボリックリンクのディレクトリ名を
/wp-admin/options-general.php
のWordPress のアドレス(URL)で指定すると言うことなのでしょうか?いちおう試してみたのですが、どうもうまく動きません。。
何度もお手数ですが、ご教示いただければ幸いです。
matsu said
am 6月 24 2008 @ 18:46:52
ユーザアカウント作成の前に、blogの初期化をしなければいけません。
blogのセットアップの1つめの作業はblogの初期化です。その際に管理者カウントの作成を行い、それを用いてログインします。
管理者のユーザ情報は各blogごとに独立して管理されます。
例えば、
blogの定義に以下を追加し、シンボリックリンクを張ります。
$prefix_array = array(
‘/~matsu/milklog’ => ‘wp_milklog_’
, ‘/~matsu/test’ => ‘wp_test_’
);
その後、以下のURLへアクセスすると
http://www.tymy.net/~matsu/test/
以下のURLへリダイレクトされます。
http://www.tymy.net/~matsu/test/wp-admin/install.php
このURLから初期化を行います。