マルチサイト環境下でブログ毎にテーマディレクトリを分割する構想

wordpressのマルチサイトでは各ブログの管理者はテーマをインストールできない

独自のテーマだけでなく公式なテーマのインストールにも特権管理者権限が必要

wordpressのマルチサイト環境では、テーマの追加権限がネットワーク管理者(特権管理者)に制限されている。各ブログの管理者は、設定されているテーマの変更はできるが、新規にテーマを追加したり独自に作成したテーマをアップロードする操作を行う権限はないようだ。

ネットワーク管理者が承認したテーマのみを選択して利用するという運用方法も悪くはないが、不特定多数のユーザーが利用するブログサービスなどを構築するのであれば、各ブログ管理者が自由にテーマを追加できるのが理想。

第三者が利用する形態のインターネットサービスをwordpressのマルチサイトで開発し、各ブログ利用者がテーマ管理を柔軟に行うにはどのような方法があるのだろうか。

テーマ管理をフレキシブルに行う

マルチサイト環境でテーマ管理を柔軟に行うにあたり以下の項目をリストアップした。

  • wpmu_new_blogによるセットアップ
  • ファイルシステムの操作
  • 動的なテーマディレクトリパスの設定
  • 権限の委譲

wpmu_new_blog

wordpress3.8では標準で3つのwordpressテーマがインストールされている。この3つのテーマは各ブログでも利用できるようにしたいので、新規にブログを作成した際に、各ブログ専用のディレクトリにコピーする処理を行う。その際に処理をフックするのが、

wpmu_new_blog

になる。具体的には

function wpsetup($blog_id)
{
    //ファイルシステムの操作(テーマフォルダコピー処理)
}
add_action('wpmu_new_blog', 'wpsetup');

上の方法で新規ブログのセットアップ処理を行うことが可能。今回の場合は、テーマフォルダの複製処理を行うことになる。パス構成は以下のような感じのものを想定している。

標準の

wp-content\themes

wp-content\themes\[domain]

ディレクトリに標準のテーマをコピーする。

動的なテーマディレクトリパスの設定

テーマディレクトリのパス変更に関する情報はweb上でも複数見つけることができた。その中で最もイメージに近かったのが以下のURLの情報。

http://wordpress.stackexchange.com/questions/12931/dynamic-template-serving-change-theme-root-using-add-filter-from-current-theme

URL方法を参考に

wp-content\themes\[domain]

からテーマを読んで、さらにアップロードできるようにできたらいいなと思っているところ。

権限の委譲

アップロード権限の委譲処理のことを指す。具体的には、特権管理者からブログ管理者に対して、テーマの新規追加とアップロードの権限を付与できるようにして、マルチサイト環境下で特権管理者のみがアクセスすることができる。

/wp-admin/network/theme-install.php

にブログ管理者もアクセスできるようにさせることで、テーマの新規追加を行えるようにするという案。もちろん、テーマの参照アップロード先は上に書いた方法により各ブログ毎にフレキシブルに設定されているという想定である。

WordPressには権限の委譲関数も用意されてはいるが、実際に、テーマのインストール関連の権限をブログ管理者に付与してみたが、

/wp-admin/network/theme-install.php

へのアクセスは実現できていない。この件については進捗があったらブログに書いてみるつもり。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

マルチサイト環境下でブログ毎にテーマディレクトリを分割する構想の記事にコメントを投稿

開発