このブログをマルチサイト化しました。またマルチサイト機能を使って不特定多数のユーザーにサイトを作成できるサービスを実現するにあたって必要だった作業をまとめておきましたので参考にしてください。
WordPress の初期設定
wp-config.php に最初の設定をする
以下の記述をファイルの中に追加します。「編集が必要なのはここまでです ! WordPress でブログをお楽しみください。」というコメントがありますので、そのすぐ下から追加すると後で便利です。
1 2 | /* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */ define( 'WP_ALLOW_MULTISITE', true ); |
ネットワークの設定をする
管理画面にアクセスするとネットワークという項目がツール辺りに出現します。中に入るとサブドメインかサブディレクトリを選択できますので、好きな方を選ぶとその後の必要な作業を教えてくれます。簡単な作業なのでここでは割愛させて頂きます。
特権管理者について
マルチサイト化をすることで、最高権限が管理者から特権管理者に変わります。サイト内で管理者となっている人よりも、特権管理者の方が強いです。プラグインによっては特権管理者しか設定を触れないものもあります。特権管理者は特権管理者が自由に与えることができますが、サイトの所有者などを自由に変えることができるため、容易に与え無いほうが良いかもしれません。
既に運用しているサイトのマルチサイト化の注意事項
既に運用しているサイトをマルチサイト化するに辺り、いろいろと躓きました。同じトラブルを避けるためにここにまとめておきます。
サブドメインでの運用しかできない
既に運用中のサイトにマルチサイト機能を付ける場合は画像ファイルなどがあるせいか不明ですが、サブドメインでの運用しかできません。つまり既に運用しているサイトで複数のサイトを作りましょうといった案が出た場合に、比較的導入しやすいサブディレクトリで運用するといった選択肢はありませんので注意しましょう。
メインサイトのパーマリンク構造が変更される
メインサイトのパーマリンクが変更されます。マルチサイト化したら、すぐにログインして設定を変更しましょう。
ファイルのアップロードできる拡張子が変わる
アップロードできるファイルの形式が変わっているようです。特権管理者でログインして zip ファイルなどがアップロードできるようにするなど、ホワイトリストを再設定しましょう。
ファイルのアップロードディレクトリについて
メインサイトについては既にアップロードされているファイル等の保存場所などは変わらず、今まで通りアップロードすることができます。例えば以下のような一般的な uploads ディレクトリにアップロードしている場合、引き続き uploads ディレクトリにアップロードされますので記事内の URL を変更したりする必要はありません。
http://example.com/wp-content/uploads/yyyy/mm/title.png
また、他のサイトについては以下のフォルダにアップロードされるようになります。
http://example.com/wp-content/blogs.dir/サイトID/files/2011/09
添付ファイルへのアクセスについては .htaccess の以下の部分が要になってきます。この部分が抜けている場合は管理画面や投稿画面に挿入されたリンクからファイルにアクセスできなくなります。画像はアップロードできるのに表示されない時は、まず .htaccess を確認しましょう。
1 2 | # uploaded files RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L] |
WordPress マルチサイトのテーマの扱いについて
仕組みとしては特権管理者がテーマを用意して、ネットワークで有効化をすることで他のサイトでテーマを選択できるようになります。あくまで選択できるようになるだけで、デフォルトではデフォルトのテーマが有効化されてしまいます。デフォルトのテーマを削除すれば真っ白な画面が表示されてしまいます。
WordPress マルチサイトのデフォルトテーマを設定する
そこで自分で用意したテーマをデフォルトテーマに設定するには以下の記述をどこかに書きます。マルチサイト初期設定用のプラグインなどを作ってそこに以下の記述を書いておくと管理が楽だと思います。
1 2 3 4 5 | function my_default_theme_setting() { update_option( 'template', 'custom_theme' ); update_option( 'stylesheet', 'custom_theme' ); } add_action( 'populate_options', 'my_default_theme_setting' ); |
テーマ名が custom_theme である場合の例です。example であれば2行目と3行目の custom_theme を example に書き換えます。以下のページが大変参考になりました。
アップロードする画像のサイズを設定する
サイトの幅やデザインに合わせて画像のアップロードサイズを予め設定しておくことも可能です。こちらはユーザーが自分で設定変更できますが、よりサイトを使いやすくするためにデフォルトで設定しておくと親切かもしれません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function my_default_image_sizes() { $sizes = array( 'thumbnail_size_w' => 120, 'thumbnail_size_h' => 120, 'medium_size_w' => 240, 'medium_size_h' => 240, 'large_size_w' => 640, 'large_size_h' => 640, ); foreach ( $sizes as $key => $val ) { update_option( $key, $val ); } } add_action( 'populate_options', 'my_default_image_sizes' ); |
こちらについては以下のページが大変参考になりました。
マルチサイトのプラグインの扱いについて
マルチサイトではネットワークでプラグインを有効化することができます。ネットワークで有効化すると、サイトのユーザーは無効・有効化することはできません。ネットワークでプラグインを有効化しなければ、ユーザーによってプラグインを無効・有効化することができます。
ユーザーに作れるサイト数を制限するプラグイン
WordPress のマルチサイトでは基本的にユーザーを自由に作れるようにし、サイトを作れるようにすると思いますが、そのままの設定ではサイトが無制限で作れてしまいます。1人につき1サイトという方向性で運用したい場合は以下のプラグインを使うと良いです。
使い方を簡単に説明しますと、プラグインをインストール・有効化すると設定の一番下に Limit Blog Registrations Per User という項目ができます。ここで Number of blogs allowed per User に1を入れるとユーザー登録した時にサイトを作成してその後特に新しく作ることはできないという環境を構築できます。
管理者のサイトにだけ特別なテーマを設定する
WordPress のマルチサイトではネットワークでテーマを有効化することで、他のサイトでテーマを有効化できるようになります。逆にネットワークでテーマを有効化しなければ、他のサイトでそのテーマを使うことができません。
ですが、管理者のサイトでは管理者用のページを作りたいということがあると思います。そういう場合は特権管理者としてログインしている状態で、メニューのサイトから管理者のサイトを選択して、そのサイトの設定タブの中に Template と Stylesheet という項目がありますので、そこから個別に設定できます。
マルチサイトでのサイトマップ生成をする
WordPress のサイトマップ XML を作成する有名なプラグイン Google XML Sitemaps はマルチサイトに対応しておりませんので、マルチサイト対応版の Google XML Sitemaps with Multisite support を使います。これを使えばマルチサイトでもサイトマップ XML を生成することができます。
マルチサイトで Google Analytics の導入機能を実装する
プラグインの Google Analytics for WordPress を使います。通常テーマに直接挿入すれば良いのですが、マルチサイト機能などを使って複数人にサイトを運用してもらうようなサービスを構築する際、テーマに Analytics のコードを挿入する機能を付けるより、このプラグインで簡単に実装すると楽です。
マルチサイトでの WP Super Cache について
WP Super Cache の設定権限は誰にあるのかについて
プラグインの有効化については特権管理者がある程度権限を握っていますが、WP Super Cache のようなプラグインは有効化したとしてもユーザー側の設定によっては実質無効になってしまうことが懸念されますが、WP Super Cache の設定ページへのアクセスは特権管理者しかできないようです。サイト内で最上位である管理者権限を持っていてもアクセスすることはできません。そのため、特権管理者で設定すれば、その設定が全サイトに共通で適用されます。
特権管理者でログインして他のサイトを見ると WP Super Cache の設定項目があるため、サイト毎に設定ができるように見えますが、ここで設定を変更すると他のサイトでも変更されてしまうようです。念のためあなたの環境でも調べてみてください。
WP Super Cache のための .htaccess への変更は手動で行う
.htaccess の更新を WP Super Cache に任せるとマルチサイト用ではない内容に書き換えられます。WP Super Cache のために必要な記述を手動で加えるか、WP Super Cache で自動的に書き換えさせた後で、以下のマルチサイト用の記述に修正します。
1 2 | # uploaded files RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L] |
自動で書き換えると、以上の記述の無い普通の設定になるためメインサイト以外のアップロードファイルが表示できなくなりますので注意してください。
終わりに
少し長くなりましたが以上になります。私で調べられる部分を調べさせて頂きました。バージョンなどの違いもあると思いますので、実際にサイトを運用する際は、この記事を鵜呑みにするのではなく、この通りかご自身でも調査してください。調査した結果、この内容と違ってる点などが御座いましたらコメントでの指摘をよろしくお願い致します。
コメント