WordPressのマルチサイト化

WordPress
概要

CMSのWordPressにはマルチサイト機能があります。通常であれば、1WordPress1サイトの運用になりますが、複数のWordPressサイトを運営する場合、プラグインやテーマを流用することも多く、個別更新が手間だったりします。

マルチサイト機能を利用すると、プラグインやテーマを共有することができ、更新の管理や、リソースを共通化できるなど、効率化できることがあります。

そこで、WordPressでのマルチサイト機能の有効化方法を紹介します。「Create A Network – WordPress.org Documentation」を参考にWordPress 6.1で確認しました。

準備

導入: 世界的に人気のCMS WordPress | GNU social JP」を参考にWordPressをインストールしておきます。

既存のWordPressサイトの場合、データベースとファイルのバックアップを取得しておきます。

全プラグインを無効にしておきます。

許可

wp-config.phpファイル内の [/* That's all, stop editing! Happy blogging. */] の行の上に以下を追加します。だいたい85行目、下から10行目あたりになると思います。

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

万が一なければ、requireincludeが登場する前に追加します。この設定でマルチサイトが有効になるので、WordPressの管理画面を開いている場合、リロードします。

設置

wp-config.phpに設定を追加したことで、設定が有効になりました。管理画面 (wp-admin) から設定を行っていきます。

[Tools]-[Network Setup] を選びます。

[Create a Network of WordPress Sites] 画面が表示されます。

[Addresses of Sites in your Network] でまずマルチサイトの構成を [Sub-domains] か [Sub-directories] から選びます。後で変更可能ですが、簡単ではないので慎重に考えます。サブドメインのほうが融通が効くことが多いので、デフォルトのサブドメインのままにします。

[Network Title] と[Network Admin Email] は後からいつでも変更できますので、デフォルトのままでもOKです。

問題なければ [Install] を選びます。

有効

[Create a Network of WordPress Sites] の画面が表示されます。

ここで、マルチサイトの有効化に必要なwp-config.phpと.htaccessの設定があります。現在のインストール状態に合わせて内容がカスタマイズされているそうです。実際に作業する際は、自分のが画面の表示内容に合わせて修正するように注意してください。

wp-config.phpと.htaccessのバックアップを取得してから追加します。

wp-config.phpの場合、以下の内容を [/* That’s all, stop editing! Happy publishing. */] より上に追加しました。最初に追加したWP_ALLOW_MULTISITEの下に追加すればよいです。

define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', true );
define( 'DOMAIN_CURRENT_SITE', 'senooken.v2006.coreserver.jp' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

.htaccessには以下の内容を追加しました。ファイルがなければwp-config.phpと同じ階層に作成します。

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

デフォルトだと以下のような.htaccessが記載されています。このBEGIN WordPress/END WordPressの中身を上記に置換します。

# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

ファイルの編集が完了したら、再ログインします。この際、Ctrl+Shift+rでスーパーリロードするなど、キャッシュとクッキーを更新してログイン画面を表示してログインします。

管理画面にログインしたら、左上に [My Sites] の新しいメニューが表示されていることを確認できます。

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

[My Sites]-[Network Admin]-[Sites] からマルチサイトのネットワークを管理できます。

結論

WordPressのマルチサイト化手順の紹介でした。

ここからマルチサイトネットワークの追加や、シングルサイトからインポートなどを行っていきます。

インポートする際には、マルチサイトの有効化が共通手順となるため、ひとまずこの単位での整理でした。

コメント

  1. GNU2 says:

    thank you so much! I might actually try this now, though I probably won’t get around to it. Your posts are always so detailed and helpful, even translating using Yanex rather than speaking Japanese. I hope native speakers appreciate it even more, as I suspect there are far fewer such tutorials available in your language due to how fewer global speakers there are.

    • ぐぬ管 (GNU social JP管理人) says:

      Thanks comment. I am surprised for your comment. Glad to be of service.

Copied title and URL