開発環境でマルチサイト環境の本番WordPress表示させたい
通常のシングルサイト状態なら確認できる。

でもマルチサイトになると偽造しきれなくて、延々ループする。
「でも何とか、データ変更することなく、開発環境で見たい!」
て人のための対応方法
マルチサイトネットワーク内の情報が欲しいだけの場合
もし、ここまでの書き換えが必要なのではなく、
同じマルチサイトネットワーク内の情報が欲しいだけて場合はコチラ⇩

この記事の目的はあくまで、ローカル開発環境で本番WordPressを確認したい人向けなのですよ。
昔の記事で設定した方へ「すいません」
⇩昔も対応する記事書いたんですよ

でもね…
『WordPress MU Domain Mapping』なんて、もはや使いやしないのだ
現在はデフォルトであるからね、マルチサイト機能。
てか、旧やりかた記事、今読んだら、全然タイトルと内容が合ってなさすぎて、何が言いたいんだ感がすごい。
直したいけど、直したとこでもう使えないから良しとする。
完全偽造する方法はない可能性が高い
公式の機能で、マルチサイトの偽造は想定していない様子。
だから
開発環境のURLに偽造はできているけど
「そんなURLはwp_blogsにない!」
と延々新規サイトを作ろうとして、延々redirectをするわけです。
設定では、どうにもならなそう
DOMAIN_CURRENT_SITEやらBLOG_ID_CURRENT_SITEやら$wpなんつらやら
色々設定できるパラメータは変更してみたけど、全然できない。
「これもうWordPressのコアやDBアクセス部分を変えないと、無理じゃない?」状態
やろうとしてる人は他にもいるけど、コアやデータいじっとる⇩

でもそんなリスクは犯したくないですよね?
マルチサイト状態で確認したいことがあるならどうしようもないんですけど
デザインやデータ、実際のプラグインの動き状況を見たりできればいい。
それだけなら別にシングルサイト状態で確認しても問題ないわけです。
というわけで、
シングルサイト偽造して確認する方法=本番環境を開発環境で見る方法
として解説していきます。
本番環境を開発環境で見る方法
書き換える場所は wp-config.php のみ。
基本設定
シングルサイトと同じで
define('WP_HOME', 【WordPress アドレス (URL)】);
define('WP_SITEURL', 【サイトアドレス (URL)】);
をローカルのURLに書き換えます。
マルチサイト用の基本設定
『マルチサイト作るのに設定したdefine系』を消します。
⇩コレ系
define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'wordpress.ne.jp');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
消さないでもfalseにはします。
define('WP_ALLOW_MULTISITE', false);
define('MULTISITE', false);
見ているドメインあたりで、if文作って分けたらよろしいかと。
データベースが開発環境からでもアクセスできるようになっていれば、これだけで読めるようになります。
SQLiteならファイル名を書き換えるとかね。
別のブログIDを見る設定
ブログIDに合わせて、プレフィックス(DBテーブルの頭に付ける文字)を書き換えます。
書き換える内容はこんな感じ。
$table_prefix = "【元々の$table_prefix】_【ブログID】_";
例えば、元々のプレフィックスがデフォルトの
$table_prefix = "wp_";
だった場合に、ブログID『2』に書き換えるとするなら
$table_prefix = "wp_2_";
管理画面を使う場合
プレフィックスとブログIDにあわせて、wp_usersとwp_usermetaのコピーを作る
プレフィックスが『wp_』、ブログIDが『2』の場合、
- wp_usersをコピーしてwp_2_users
- wp_usermetaをコピーしてwp_2_usermeta
注意事項
滅多に起きないけど、開発によっては困るからメモ程度に。
プラグインはネットワークより個別
開発サイトで確認予定であるなら、ブログ毎にプラグインを有効にすること。
シングルサイト偽造した状態では、個別のプラグイン状態しか、理解しない。
ネットワークの有効状態は、無視することになる。
サイト毎にプラグインを有効+ネットワークでプラグインを有効の『W有効』状態は、
通常の使用は問題ないが、
シングルサイト偽造した状態では、
プラグインは有効でありながら、isPluginActive()の判定にかからない謎現象もある。
マジ謎。
問題を起こさないためにも、ローカル偽造するなら『ブログ毎』にプラグインを有効にしてください。
逆にローカルで使いたくないプラグインは『ネットワークで有効』にしておくといいかも。
コメント