Wordpress 3.0から使えるネットワーク機能(マルチサイト)を有効化してみた。

Wordpress 3.0から、複数のブログを1個のWordpressで管理出来るネットワーク機能が実装されてます。これは別に開発されていたWordpress MUを取り込んだ物らしいです。
このネットワーク機能、インストールが簡単なWordpressとしては、ちょっとだけ込み入った手順で有効化しないと使えないので、試しにやってみました。

手順

ネットワークの作成 - WordPress Codex 日本語版

手順はWordPress Codexに詳しく書いてあるので省略します。

WordPress 3.0 をマルチサイト化する方法 | LovelogWordPress カスタマイズ | Lovelog

Wordpress 3.0 なので若干古いですが、このエントリーがかなり詳しく書いてます。有効化後の設定画面とか、3.1で変わってる所もありますが、参考になると思います。
ネットワーク機能はまだ手順が多いので、Wordpressのバージョンが上がると、まだまだ少しずつ変わっていくんじゃないかとは思います。

注意点

サブドメイン型とサブディレクトリ型がある
  1. サブドメイン -- site1.example.com や site2.example.com のような構成
  2. サブディレクトリ -- example.com/site1 や example.com/site2 のような構成

サブドメイン型はApacheDNSの設定が関わってややこしい。
なので、サブディレクトリ型の方が手軽にできます。

Wordpressを別ディレクトリに配置するとネットワーク機能は使えない。

example.com/wordpress/に本体を配置して、example.comでアクセス出来る様な置き方をすると、ネットワーク機能は使えません。example.comでネットワークを有効化して使いたい場合は、example.com/wp-content/example.com/wp-include/となる様な配置にしないと駄目です。
他にも制約が色々あるみたい。

プラグインとテーマの置き場所は共通

ネットワーク機能を使わない場合と同じ様に、プラグインwp-content/plugins/に、テーマはwp-content/themes/に配置します。
ブログ毎に有効化するプラグインは設定出来るけど、そもそも選択肢に出なくするのは出来ない様です。とあるブログ専用にプラグインやテーマを作っても、別のブログからも有効化すれば使えちゃいます。

プラグインの有効化

プラグインは、ネットワーク全体で有効化する事で、各ブログで使える状態になります。そして、各ブログのプラグイン画面にそのプラグインは表示されなくなります。ネットワーク全体で有効化してないものが、各ブログのプラグイン画面で個別に有効化出来ます。

テーマの有効化

テーマは、ネットワーク全体で有効化する事で、各ブログのテーマ画面にそのテーマが表示されます。各ブログでは、その中から使うテーマを選ぶ事になります。ネットワークで有効化してないテーマは、各ブログのテーマ画面にも表示されないので選べません。

手順4: ネットワークのインストールで表示されるメッセージ

手順1〜3で準備をしたら、手順4 でインストールボタンを押してネットワーク機能を有効化します。その際、表示されるメッセージです。ちょうど手順5の部分です。

これはwww.example.com/wp/Wordpressを設置している場合のメッセージです。

ネットワークを有効化中

サイトのネットワークの作成の機能を有効にするため、次のステップを実行してください。

注意: 現在の wp-config.php のバックアップをとることをおすすめします。
  1. /var/www/example.com/wp/wp-content/blogs.dir に blogs.dir ディレクトリを作成してください。このディレクトリは追加サイトにアップロードしたメディアファイルを保存するために使われるため、サーバーが書き込み可能である必要があります。
  1. /var/www/example.com/wp/ にある wp-config.php ファイルの、/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */ という行より上に以下のコードを追加してください。
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
$base = '/wp/';
define( 'DOMAIN_CURRENT_SITE', 'example.com' );
define( 'PATH_CURRENT_SITE', '/wp/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
  1. /var/www/example.com/wp/ の .htaccess ファイルに次を追加し、ほかの WordPress のルールを置き換えてください。
RewriteEngine On
RewriteBase /wp/
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [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).*) $1 [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

以上のステップを完了すると、ネットワークの有効化と設定が行われます。ログインし直す必要があります。 ログイン

環境

Wordpress 3.1.2
debian wheezy/sid
php 5.3.6-11