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でも問題なく利用できています。

コメント (12) »

  1. yuki said

    am 3月 6 2008 @ 22:11:06

    こんにちは、はじめまして。
    Wordpressで一つの管理画面で複数blogを運用したくて、
    情報を探していてたどりつきました。
    初心者のため、まつぼっくりさんの方法を試してみたのですが、
    うまくいきません。もう少し詳しく教えてもらえませんか?
    wordpressは二つインストールする必要があるんですか?
    とても初歩的な事をきいているとは思うのですが、とても困っていて
    お返事をいただきたいです。宜しくお願いします。

  2. matsu said

    am 3月 7 2008 @ 4:25:34

    yukiさん

    はじめまして。
    コメント書いてくださってありがとうございます。

    wordpressは2つインストールする必要はありません。この点が、この記事で書いた方法の利点です。

    記事の最初の方にある「こんな人向け」の各項目を理解できるレベルが前提なのですが、こちらの方はクリアですか?

  3. yuki said

    am 3月 7 2008 @ 11:31:13

    matsuさん

    お返事ありがとうございます。
    はい、シンボリックリンクという言葉は初めて知りましたが、そのほかは理解できます。
    ご説明いただくにどの程度までWordPressの事を私が知っているか必要なんだと思いますが、テンプレートを使わずにページやカテゴリーを作成して10ページ程度のwebサイトを作りました。
    ご存じか分かりませんが、毎日コミュニケーションズ出版のWordpressサイト構築スタイルブックの内容が理解できる程度です。
    webデザインをメインにしているので、あまりphpの事には詳しくはありません。
    matsuさんの方法を理解するにはphpが基本理解できないと難しいですか?

  4. matsu said

    am 3月 7 2008 @ 23:03:27

    yukiさん。

    前提スキルの説明ありがとうございます!

    そして、前提となるサーバ環境も重要です。
    以下の条件はクリアしてますか?
    > サーバ上でシンボリックリンクを張れる。

    シンボリックリンクを作れないとこの記事にある手法は使えます。

    もし、シンボリックリンクを張れるのであれば、PHPのスキルはさほど必要ありません。

    以下の手順で行うのがいいと思います。
    1.Wordpressをセットアップ。blogも作る。
    2.別のblog用のシンボリックリンク作成
    3.wp-config.phpをこの記事に従って編集。

  5. buckeye said

    am 5月 15 2008 @ 12:38:39

    エントリーをお書きになってからだいぶ時間が経っていますが、質問させて下さい。

    この方法で複数のblogを運用した場合、WordPressの設定は複数出来るのでしょうか。例えば、ブログタイトル・キャッチフレーズなどです。”ネザーランドドワーフのみるくです!”も拝見したところ、設定できているようでしたので。

    よろしくお願いします。

  6. matsu said

    am 5月 15 2008 @ 13:38:45

    buckeyeさんコメントありがとうございます。

    この方法の場合、複数できますよ。
    wordpressは設定をデータベースのテーブルへ保存しています。この方法はblogごとに違うテーブルを利用するため、blogごとに独立した設定を行えます。

  7. buckeye said

    am 5月 16 2008 @ 9:53:32

    matsuさん早速お返事頂きありがとうございます。

    なるほど、設定もデータベースに保存されるんですね。MySQLの中身をちょっと覗いてみて感動しました。
    先に確認しておくべきでした。

    実際にこの方法を採用しようと思ったのですが、何がわかっていないのかはっきりしました…シンボリックリンクはどこからどこへ張ればいいのですか?
    このエントリーの内容だと、こんな感じですか?
    ln -s blog milklog

  8. matsu said

    am 5月 16 2008 @ 13:45:15

    シンボリックリンクは提示していただいた内容でOKです!

    ln -s blog milklog

    フォーマットはこんな感じです。

    ln -s <ファイルのあるディレクトリ> <仮想的に扱うディレクトリ>
  9. snt-f said

    am 6月 23 2008 @ 11:39:55

    matsu様、はじめまして。
    上記の情報ありがとうございます。
    ただ、ちょっとつまずいていまして、ご教示いただきたく存じます。
    wp-config.phpに追記して、シンボリックリンクは張れたのですが、WordPressにアクセスすると、新規のユーザー扱いになってしまいます。
    ユーザーはあらかじめ作っておくモノなのでしょうか。。
    やりたいこととしては、MTのホスティングライセンスのようなイメージです。ただ、投稿するのは特定のユーザーのみですので、ユーザー登録などは裏側で追加する運用で問題ありません。
    よろしくお願いします。

  10. matsu said

    am 6月 23 2008 @ 13:31:48

    snt-fさん。
    Wordpressではユーザ情報はデータベースへ格納されます。この記事の方法を実践すると、データベースは各blogごとに作成されます。

    ホスティングサービスとして運用するならば、blogの定義を追加するとともに、ユーザアカウントを追加する必要がありますね。

    がんばってっください

  11. snt-f said

    am 6月 23 2008 @ 21:08:32

    matsu様
    返信ありがとうございます。
    ただ、ちょっとわからないのですが、
    > blogの定義を追加するとともに、ユーザアカウントを追加する必要がありますね。
    上記のそれぞれのやり方がわからないのですが、ご教示いただけませんでしょうか。

    ユーザーアカウントは、普通にwp-adminで作成するものなのでしょうか。また、そのユーザーのブログの定義はwp-config.phpで 設定したシンボリックリンクのディレクトリ名を
    /wp-admin/options-general.php
    のWordPress のアドレス(URL)で指定すると言うことなのでしょうか?いちおう試してみたのですが、どうもうまく動きません。。
    何度もお手数ですが、ご教示いただければ幸いです。

  12. 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から初期化を行います。

Comment RSS · TrackBack URI

コメントをどうぞ

名前: (Required)

eMail: (Required)

ウェブサイト:

コメント:

 

リンク