RSS
 

Multi-siteをWordPress 3.1-RC2にアップデートしてはまって解決

05 Jan

coreserverでWordpressをMulti-site運用している。
もともとWPMUを入れていて、WP3にアップデート、現在に至る。

/wp-admin/ に入ろうとすると &reauth=1 に飛ばされて永遠にログインできない事態に巻き込まれ、泥臭く調査してどうにか解決した。

1. ResponseのSet-Cookieヘッダを確認
まずFirebugの用意。ChromeとかIEのツールはリダイレクトを追えないようだ(できるの?誰か教えて!)
まあ、HTTPを見られればなんでもいいです。
で、いっちゃん最初のPOSTからのResponseを確認する。Set-Cookieヘッダ内に domain=とpath=があるはず。僕の場合はこの2つがおかしくてログインに失敗していた。

2. wp-config.phpから、define(“〜〜_CURRENT_SITE”, 〜〜) を削る
これは確か、WPMUあたりでマルチサイト化を始めるにあたり、「wp-config.phpにこれを書いとけよ!」と指示されていたものなのだが、こいつがあるとSet-Cookieのdomainとpathがここに書いた設定に強制的になってしまう。詳しくは wp-includes/ms-load.php の wpmu_current_site() を見るといい。

3. wp_siteテーブルに子サイトの情報を書き込む
これ、なぜか手作業。RC2のバグかもしれん。報告した方がいいのかな。。。そわそわ。

4. wp-include/ms-load.phpを修正
なおらん!どう考えてもおかしい!ということでけっこう強引に直してしまった。
この修正はあんま自信無いです。(動くけど、方針に合ってないかも)
function wpmu_current_site() の真ん中の辺り。

2つのdefine分が追加箇所。

とりあえずこれで動いてます。たぶん。

 
2 Comments

Posted in wordpress

 

Leave a Reply

 

 
  1. kuboon

    2012/01/01 at 18:56

    WordPress 3.3でもまったく同じ問題が発生し、同じ解決法が有効。

     
    • kuboon

      2012/07/26 at 17:25

      3.4.1 で同様に解決。191行目。