wordpressでマルチサイトを有効にする

イラストとか, プログラムのことWordPress, マルチサイト

ハニーウィップじゃなくてハニートラップ。
9negimiku160923
引っかかるとネギをブチ込まれます。

それはさておき、前回の予告通りマルチサイトの解説。
wordpressはblogレンタルサービスじゃなく、blogそのものを企業・個人問わず
立ち上げるのに導入も楽で非常に使いやすいんですが
デフォルトの設定だとblogは一つしか立ち上げられません。

普通はblogは一つしか使わないからそれで問題はないのですが
例えばapacheを導入していてバーチャルホスト機能を使って複数サイトを運営したりって言うような
サーバーの使い方をしている所もあるように
blogも同一ドメイン内で複数サイトを運用したいって言う環境もあると思います。
そういう時にはmovable typeの場合はデフォルトで静的サイトもblogも複数運用出来ていたのですが
wordpressではblogサイトを1つ運営するってだけでした。

これは仕様だから仕方がないと思っていたら、wordpressも実は複数運用を出来る設計になっていて
デフォルトだとそのオプションがオフになっていただけでした。

という訳で複数運用できるように設定をまず変更します。

wordpressをインストールしたディレクトリにある
wp-config.phpを開いて
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */
って部分が下の方にあるので、その上に

define('WP_ALLOW_MULTISITE’, true);

を追加して保存します。

初期設定

wp-config.phpを保存してからダッシュボードにアクセスすると
左メニューの「ツール」に「ネットワークの設置」って項目が追加されているのでまずはそれを選択。
この際にプラグインを全部一旦止めてとか言われるので、先にプラグインを全部停止させて下さい
設定とかも初期化されるかもなので、設定項目は覚えておくと良いかも。

無事にプラグインを全部停止させたら、この「ネットワークの設置」メニューから
「WordPress サイトのネットワークの作成」のページに行けるのでページ内のインストールボタンが押すと
マルチサイト構築のためのインストール作業が始まります。

ここで画面に再びwp-config.phpと、新たに.htaccessを編集しろって言われるので
画面上部(項目1)のソースをwp-config.php
先ほどと同様の
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */
の上辺りに貼り付けて、画面下部(項目2)のソースを.htaccessに貼り付けます。

もし.htaccessがサイトに複数ある場合、このソースはwordpressインストールしてるルートディレクトリの.htaccessに貼り付けてください
ウチの場合はhttp://mayragna.net/weblog/がwordpressのルートなので、そこにあるやつに貼り付けました。

ここで注意ですが、このソースを既存の

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

の下に貼り付けると、漏れなくworpress内でサイトを新規追加した場合に、
その新規サイトの方のダッシュボードにアクセスできなくなるので
上記ソースを上書きするか、上記ソースを#でコメント化した上で形で貼り付けて下さい。

これら2つのファイルの編集が終わったら一度wordpressからログアウトして再ログインします。
これでマルチサイト有効化が完了します。

設定変更

マルチサイト有効化してからまずやらなきゃいけないのは
元からあったblogサイトのパーマリンクを見直します。

大抵のサイトではトップページは問題はないのですが
元からあったblogの個別エントリー等のパーマリンクに「blog」ってディレクトリが追加されているので
(元々http://hoge.com/myblog/パーマリンクだったのがhttp://hoge.com/myblog/blog/パーマリンクになってる)
このままでは記事単体へのリンクが全部変わってしまい色々と不都合になります。

なのでパーマリンクからblogディレクトリを無くしたいのですが
元のサイトのダッシュボードからパーマリンク設定を開いてもblogディレクトリは固定化されているので弄れなくなっています。
そこでまず、パーマリンクをデフォルト(一番上の基本ってやつ)に戻し
(この際にデフォルトに戻すとカスタム構造が初期化される可能性あるのでバックアップしておくと良いかも)
上部メニューの「参加サイト」からの「サイトネットワーク管理者」のダッシュボードに移動し
site_admin160922
「サイト」の一覧から元からあったblogを編集し、設定を選ぶとblogの設定項目一覧が出てくるので
いっぱいある項目の中から「Permalink Structure」って項目に
先程のパーマリンク設定の自分が選んでいた構造を貼り付けてから
元からあったblogの方のダッシュボードからパーマリンク設定を見直してみると
/blog/が消えて元々のパーマリンクに戻ってるのが確認できるはずです。

因みにこれはあくまで元々あったblogに適応できるのであって、新しく開いた子サイトのblogでは
どうしてもwordpressインストールディレクトリ配下にサブディレクトリが作られる構造なので
例えば
元々のblogサイト:http://hoge.com/myblog/
新規blog子サイト:http://hoge.com/myblog/newblog/
とした場合に、個別エントリーやアーカイブページを
http://hoge.com/myblog/newblog/パーマリンク構造(エントリーid等)
になってるのを元々のblogサイトと同レベルの配下(http://hoge.com/myblog/パーマリンク構造(エントリーid等)みたいな)
に並べるのは出来ないようになってるのでそこは注意。
ウチは過去ログが元々http://mayragna.net/myway/と、現行blogのhttp://mayragna.net/weblog/と同レベルツリーだったので
過去ログもトップページは仕方がないにしてもアーカイブページはURL短くしたかったから出来なくて残念であった。

MTと違ってwordpressは静的ファイルそのものを作らず、データベースから取得した内容を
仮想URLで出力して閲覧させてるシステムだから出来ても良かったと思うけどねぇ…。

まぁウチみたいに以後更新されない過去ログとして子サイト作るならまだしも
本来は別blogとして運営させるだろうから現行blogと新規blogでパーマリンク構造同じにしてエントリーidやら日付やらかぶったら
どっちのエントリー表示させればいいか分からんから出来ない方がシステム的に都合はいいんだろうけど。

あ、これで全て完了したら元々のサイトのプラグインを元に戻すのを忘れないように!
多少管理権限の違いでテーマの管理等ダッシュボードの使い方違ってるけどその辺は触ってれば分かります。
テーマの使い勝手は前回のエントリーで語ったので割愛。