Category: Works , WordPress
Works

wordpress:マルチサイト化する手順

wordpress:マルチサイト化する手順
  • twitter
  • facebook
  • はてな
  • line

wordpressをマルチサイト化できることは知ってると思いますが、その手順を書いていこうと思います。

ブログに書こう書こうと思ってたんですが、検証用に環境を構築するのが面倒なのでのびのびになってしまってました。

マルチサイトで書きたいネタが1つあるので、それ用に環境を構築しついでに手順もまとめちゃおうってことです。

wordpressのインストール

まずは普通にwordpressをインストールします。

検証では現在の最新版である5.03を使いました。

稼働中のwordpressをマルチサイト化する場合はファイル・データベースを移植し、テストサイトにてまずは行ってください。

マルチサイト化の設定

wp-config.phpに追記

まずはwp-config.phpに追記します。

define('WP_ALLOW_MULTISITE', true);
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */

書く場所は「/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */」の上で。

管理画面にアクセス

上記の設定を終えた上で管理画面にアクセスし、「ツール」→「サイトネットワークの設置」へ移動。

サイトネットワークの設置

プラグインが有効化されている場合は警告が出るので一旦すべてのプラグインを無効にしておいてください。

プラグインの無効

ネットワークサイト作成画面が開きますので、名称と管理者メールアドレスを入力します。

ネットワークサイト作成

どちらも任意のもので問題ありません。

ちなみに、この環境ではサブディレクトリになりますが、ルートにwordpressをインストールしている場合はサブドメイン・サブディレクトリどちらか選べるようになります。

例)

  • サブドメイン
    site1.sample.com
    site2.sample.com
  • サブディレクトリ
    sample.com/site1
    sample.com/site2

サブドメイン利用はサーバでサブドメインが設定されている必要があります。

サーバによってはサブドメイン利用できない場合もありますので、特にこだわりがなければサブディレクトリで作成するのが無難だと思います。

wp-config.php・htaccessを更新

上記の設定が終わると下のような画面が表示されますのでそれにならって各ファイルを更新します。

wp-config.php・htaccessを更新

wordpressインストールディレクトリは「sample」にしています。

wp-config.php

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'securavita.net');
define('PATH_CURRENT_SITE', '/sample/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */

1番最初に追加した「define(‘WP_ALLOW_MULTISITE’, true);」以下に追記する形になります。

htaccess

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /sample/
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]
</IfModule>
# END WordPress

BEGIN WordPressの間を書き換えます。

これでマルチサイト化の設定は完了です。

子サイトの作成

マルチサイト化の設定が終わったら子サイトを追加します。

「サイト」→「新規追加」

子サイトの作成

サイトアドレスとサイト名は任意で入力。

管理者メールアドレスはなんでもOKですが、登録されていないアドレスだった場合は新規でユーザーが作成されます。

あとから追加できますので、とりあえずは「特権管理者」のユーザーを入力するのがいいかと思います。

子サイトが作成されるとサイトの一覧に表示されます。

子サイトの作成

管理画面左上の「参加サイト」からサイトネットワーク管理を含め、各サイトの管理画面に移動することができます。

子サイトの作成

テーマの設定

マルチサイト化するとテーマの扱いも若干変わります。

サイトネットワーク管理でテーマを有効化しておかないとサイトの外観から選択できません。

・インストールされているテーマ(サイトネットワーク管理のテーマ)

マルチサイトテーマの設定

・サイトで使用できるテーマ(子サイトの外観)

マルチサイトテーマの設定

プラグインの設定

プラグインもテーマと同様扱いが変わります。

サイトネットワーク管理のプラグインから「サイトネットワークで有効化」しているプラグインは基本サイト・子サイトで強制的に有効になり、そうではないプラグインは任意に有効・無効の設定ができます。

・サイトネットワーク管理のプラグイン

マルチサイトラグインの設定

・子サイトのプラグイン

マルチサイトラグインの設定

基本サイトのパーマリンク問題

あと気になる点といえば、基本サイトのパーマリンクに「/blog」という文字列が付いてしまいます。
これはwordpressのデフォルト設定みたいですが、親サイトとして使う場合は消したいですよね。

基本サイトのパーマリンク

消す方法はサイトネットワーク管理の「サイト」→基本サイトの「編集」をクリックします。

「設定」タブを開き、その中からPermalink Structureを探します。

基本サイトのパーマリンク
基本サイトのパーマリンク

その内容を削除し変更を保存します。

その後、再び基本サイトのパーマリンク設定に行くと「/blog」が消えていることが確認できると思います。

基本サイトのパーマリンク

変わっていない場合はパーマリンクを一度デフォルトに設定し直してからもう一度上記の作業を行ってみてください。

wordpressマルチサイト化をするにあたっての注意

wordpressのマルチサイト化は通常のwordpressとは仕様が異なりますので十分検討した上で行ってください。

注意点

  1. 対応していないプラグインがある
  2. 同じデータベース内に作成するので分離させることができない
  3. エラーが出た際の影響が大きい

対応していないプラグインがある

そのまんまです。

代替プラグインや自作で対応できればいいですが、できない場合は構築自体が無理になります。

同じデータベース内に作成するので分離させることができない

例えばデータベースサイズが膨らみすぎてサイトを分離させたい場合や、子サイトの内1つを別サーバに移転させたい・独立させたい場合などです。

マルチサイトは1つのデータベースで構成されているので基本分離できません。

記事のインポート・エクスポートで対応できる分には大丈夫ですが、各サイトが複雑な構成になってる場合は基本無理です。

データベースをゴニョゴニョすればできると思いますがそれなりに大変だと思います。

※こういうことができるプラグインが有料ですがあるみたいですね。

WordPressのマルチサイトから個別にサイトを分離して移行する方法 | わぷログ

エラーが出た際の影響が大きい

wrodpressのアップデートやプラグインの更新、テーマの更新などでエラーが出た場合、ネットワーク全体に影響がでます。

あとネットワーク管理の設定を変更した場合もネットワーク全体に影響がでます。

こっちでは大丈夫だったけどこっちではエラーがでた、なんてこともあるかもしれません。

構築の前に

マルチサイトで構築する際は前もってテストしておいたほうがいいと思います。

特にマルチサイトでできるかどうかわからないような複雑な構成の場合は、設計の段階でテストするべきですね。

あと既存のサイトをマルチサイト化する場合、そもそも無理な事もあるのでテストは必須です。

簡単な構造であればカスタム投稿や、テンプレートファイルの構造だけでも違うサイトに見せることが可能なので、そういった事も踏まえて設計すべきだと思います。

ニーズに沿えば便利な機能だと思うので設計はしっかりと!ですね。


おもしろかった・役に立った
  • twitter
  • facebook
  • はてな
  • line
▼ブログランキング参加中!クリック!▼
  • ブログランキング・にほんブログ村へ

Leave a comment

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください