LoginSignup
0
0

More than 5 years have passed since last update.

Wordpress4.6マルチサイトでネットワークの更新をしそびれた顛末

Last updated at Posted at 2016-12-14

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にあげたときにネットワークの更新をしそびれたからだと考えられる。つくづく反省。。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0