Wordpress4.7に上げたとたん、管理画面から参加サイトが一切消えてしまった
各々のマルチサイト自体は存在しているのだけど、いつものように左上のプルダウンから参加サイトが一切消えてしまった。
わかったこと
参加サイトの取得は wp-includes/user.php のget_blogs_of_userという関数が担っている。
ひとつづつデバッグして調べたところ、656行目でget_sitesを実行すると結果が一切かえってこなくなったことがわかった。
get_sitesは、640行目で現状存在するblog_idを配列site_idsに収め、650行目あたりの条件を加えて、$wpdb->blogを読み出していた。
650行目あたり
if ( ! $all ) {
$args['archived'] = 0;
$args['spam'] = 0;
$args['deleted'] = 0;
}
どうやらこの条件が引っかかっていた。
しかし、DB見てもarchived,spam,deletedはどのサイトも0が表示されていたのでしばらく悩んだあと、phpmyadminで見るとarchivedだけ数字が左寄せに表示されていた。ここで、データ型が合っていないことにやっと気づいた。
対処
$wpdb->blogに相当するテーブルのarchivedのデータ型がenum('0', '1')になっていた。
Wordpress4.7マルチサイトで問題なく動作しているDBを見るとarchivedのデータ型はtinyintだった。
それにならって、tinyint(2)NOT NULL DEFAULT '0'に変更したところ、通常通り参加サイト一覧が表示されるようになった。
原因の考察
4.6にあげたときにネットワークの更新をしそびれたからだと考えられる。つくづく反省。。。