WordPressのマルチサイトを使ってみるにあたっての予備知識
はじめて業務レベルでしっかり使ってみたので、利用方法などのメモ。
マルチサイトの有効化
wp-configのWP_DEBUG直後くらいに追加
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'hoge.me'); //親サイトのドメイン
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
.htaccessを以下に変更
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [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).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
ドメイン
サブドメイン式・サブディレクトリ式で選べる。通常、混在はできない。
しかしプラグインを使うとマルチドメインというのもやろうと思えばできる模様。
プラグイン例:WordPress MU Domain Mapping
最終更新日がかなり前なのでちょっと心配だけど、調べてみるとこれがオススメらしい。
マルチサイトの用語
サイトネットワーク
親サイトとそれに紐づく子サイトたちの集合を「サイトネットワーク」と呼ぶ。
特権管理者
一番なんでもできる権限
最初にWP自体をインストールした際のadminが「特権管理者」になる。
サイトネットワークダッシュボード
特権管理者だけが見られるダッシュボード
以下の項目が管理可能
* サイト
* ユーザー
* テーマ
* プラグイン
* 設定
サイト
サイトネットワーク内にどんどこサイトを追加していける。
サイトネットワークにサイト(子サイト)を追加する際に、通常のWP同様、管理者を一人追加する必要がある。
ユーザー
サイトネットワーク全体のユーザーという扱いになるため、新規ユーザー追加は特権管理者が追加可能。
サイトネットワークダッシュボードからユーザーを追加した場合は、どのサイトに何の権限があるかを設定する必要がある。
1ユーザーに複数サイトの権限を設定したい場合はサイトネットワークダッシュボードの「サイト」→「ユーザー」から設定しないといけないのでちょっとめんどくさい
各サイトのダッシュボードから直接追加した場合は自動的にそのサイトのユーザーとして紐づく。
事前にサイトネットワークに特権管理者が追加しておいたユーザーであれば、各サイトの管理者がサイトのユーザーとして登録可能。
テーマ
インストールはサイトネットワークのダッシュボードから行う。「ネットワークで有効化」を設定すると、サイトネットワーク内の全サイトで利用可能となる。
有効・無効の設定はサイト毎に可能だが、どこかのサイトだけ利用可能にする事はできない。
サイトネットワークダッシュボードからの「テーマの編集」は可能だが、各サイトからの「テーマの編集」は利用不可。
プラグイン
インストールはサイトネットワークのダッシュボードから行う。「ネットワークで有効化」を設定すると、サイトネットワーク内の全サイトで利用可能となる。
有効・無効の設定はサイト毎に可能だが、どこかのサイトだけ利用可能にする事はできない。
テーマがプラグインに依存している場合に、テーマを有効にするとプラグインをインストールする事があるが
サイトAでインストールを許可するとサイトネットワーク上にインストールされネットワークで有効化された扱いになるため
別のテーマを使っているサイトBからも使えるようになる。
メディア
子サイトにUPしたものを親サイトで使う、といったメディアライブラリ上での横断はできない。
親サイト:/wp-content/uploads/2016/09/IMG_001.jpg
子サイト:/test1/wp-content/uploads/sites/2/2016/09/IMG_002.jpg
子サイトのメディアは以下の通りのURLになる。
{blog_prefix}/wp-content/uploads/sites/{blog_id}/
DBテーブルの様子
子サイトのテーブルは{prefix}_{blogid}_postsという感じになる。
テーブル眺めていたんだけど、実はcodexの「データベース構造」に詳しく載っていた。