運用中のWordPressサイトをサブディレクトリ型でマルチサイトにする方法

WordPressサイトのサブディレクトリを使用したマルチサイト化は下記の手順で行います。新規に立ち上げる場合はかなりあっさりと完了すると思います。しかし、すでに運用してしばらく経っているサイトの場合は、「(3) ネットワークのインストール」でつまずくので、その際の解決方法を提示します。

プラグインやサブドメインではなく、サブディレクトリを使用してマルチサイト化する理由についてはこちらの記事をご参照ください。

  • (1) wp-config.phpファイルの編集
  • (2) すべてのプラグインを無効化
  • (3) ネットワークのインストール
  • (4) ネットワークの有効化
  • (5) 再ログイン
  • (6) サブディレクトリ用のサイトを作成

 

  • (1) wp-config.phpファイルの編集

この段階で嫌になる人も多いかもしれませんが、『wp-config.php』ファイルは単なるテキストファイルなので、簡単に編集できます。

FileZillaなどのFTPソフトを使用していない方はこの段階で使用方法を覚えたほうが良いかもしれません。FileZillaは他にも用途が多いソフトなので、まだ導入していない方はこの機会にダウンロード(Mac/Windows)しましょう。

FileZillaで【ファイル】→【サイトマネージャ】→【新しいサイト】を選択し、XSERVERなどのレンタルサーバー会社と契約した段階で受領したメールに記載されているFTP情報(FTPホスト、FTPユーザー、FTPパスワード)をそのまま入力して、残りは初期設定でOKです。XSERVERをご使用の場合はここで詳細を確認できます

無事にFTP接続ができたらローカルにサイトまるごと全部ダウンロードして、『public_html』フォルダに入っている『wp-config.php』に以下を追加します。

Wordなどのアプリではなくシンプルなテキストエディタで編集してください。Macの場合はTextEditでそのまま普通に保存すればOKです。Windowsの場合はメモ帳ではなくNotePad++を使って『UTF-8 BOM無し』で保存する必要があるようです。

/* Multisite */
define( 'WP_ALLOW_MULTISITE', true );

追加する場所は英語版のファイルの場合は以下のコメントの上になります。

/* That's all, stop editing! Happy blogging. */

つまりこうなります。

/* Multisite */
define( 'WP_ALLOW_MULTISITE', true );
/* That's all, stop editing! Happy blogging. */

wp-config.phpファイルが日本語の場合は以下のようになります。

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

編集した後にFileZillaを使ってアップロードします。このソフトは優れものでドラッグするだけで簡単にアップロードやダウンロードができます。

どうしてもFTPソフトを使用したく無いという方は『WP Config Editor』というプラグインを使用して『wp-config.php』ファイルを編集することも可能です。

 

  • (2)すべてのプラグインの無効化

左側のメニューから【プラグイン】を選択し、【プラグイン】の横のチェックボックスをクリックして印をつけて、【一括操作】をクリックして【停止】を選択。そして【適用】をクリックします。

 

  • (3) ネットワークのインストール

管理画面の【ツール】で【ネットワークの設置】を選択します。新規サイトの場合は、ネットワーク内のサイトアドレスに【サブドメイン】と【サブディレクトリ】が表示されて選択することができるのですが、すでに運用中のサイトの場合は【サブドメイン】しか表示されません。

つまり一見するとサブディレクトリ型での運用が不可能なように見えます。実際にWordPress関連の記事の多くが運用中のWordPressサイトではサブディレクトリ型のマルチサイトは不可能だと説明していますし、どうしてもサブディレクトリ型で運用したかったので、WordPressをインストールし直したという人もいるようです。

私もここでつまずいて、一時はサブディレクトリ型を諦めてサブドメイン型で多言語運用をしようかと思ったのですが、英語圏のサイトで解決方法を見つけました。【外観】→【テーマの編集】→【テーマのための関数】を選んで、『functions.php』ファイルの最後に下記の記述を追加するだけです。

add_filter( 'allow_subdirectory_install',
	create_function( '', 'return true;' )
	);

これですでに運用中のサイトでもサブディレクトリ型のマルチサイトの設置が可能になるので、【ツール】→【ネットワークの設置】で【サブディレクトリ】を選択して【インストール】ボタンをクリックします。

 

  • (4) ネットワークの有効化

すると『wp-config.php』ファイルと『.htaccess』ファイルを編集するようにとの指示が表示されるので、それぞれのファイルに指定されたコードをコピペします。

『wp-config.php』ファイルには次の表記を記入します。このファイルは最初のステップで編集したファイルです。このファイルに以下のコードを追加します。

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'sw-test.work');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

.htaccessファイルも同様にテキストエディタで編集します。保管されている場所は『wp-config.php』と同じ『public-html』フォルダです。『.htaccess』ファイルについても管理画面から編集できる『WP Htaccess Editor』というプラグインが出ているので、FTPソフトを使いたくない方はこれを使って編集可能です。以下のコードを追加します。

 RewriteEngine On
 # https§À≈˝∞Ï
 RewriteCond %{HTTPS} off
 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
 
 #added for multi site

 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] 

 

  • (5) 再ログイン

これらのファイルの変更が完了するとログアウトしているので、再びログインします。

 

  • (6) サブディレクトリ用のサイトを作成

左上にある【参加サイト】から【サイトネットワーク管理】→【サイト】→【新規追加】を選択します。

サイトアドレス、サイトのタイトル、サイトの言語、管理者メールアドレスを指定して【サイトを追加】をクリックするとサブディレクトリのサイトが作成されます。

追記

ちなみに新しく作成したサイト用にテーマを追加する場合は、左側のメニューに表示されている【外観】ではなく、【参加サイト】→【ネットワーク管理】→【テーマ】から追加する必要があるのでご注意ください。

マルチサイトの運用では一部のメニューの場所が【参加サイト】下に移動します。たとえば先程行ったfunction.phpの編集なども、マルチサイトにした後は次の場所に移動しています。

【参加サイト】→【サイトネットワーク管理】→【テーマ】→【テーマの編集】→【テーマのための関数】

マルチサイトにした後に、あれ、メニューが無くなってる!? という状況になったら【参加サイト】以下をチェックしましょう。