WordPress で特定プラグインを無効化する
WordPress でアップデートの通知が来たので、アップデートボタン(管理画面の上のくるりとまわった矢印)をクリックしたら、Fatal error: Uncaught Error: Call to undefined method で始まる長い文字列が表示されてしまった。
文字列を見る限り、プラグインの「slidedeck」が原因らしい。
そこでプラグインを停止しようと、プラグインページへ行こうとすると、また同じ文字列が表示されて止まってしまう。管理画面上ではどうすることもできなくなってしまった。
こうなったら、MySQL のデータベースを直接いじって修正するしかない。
(1)phpMyAdmin へログインして該当のデータベースを選択。さらに、Table: wp_options > active_plugins の編集ボタンをクリック。
(2)option_value の値を観察する(どこかにコピーしてバックアップを取っておくとよい)。
私の環境では option_value が以下のようになっていた(〜は省略部分)。
a:22:{i:0;s:21:"polylang/polylang.php";i:1~i:16;s:23:"slidedeck/slidedeck.php";~}
最初の a:22: は有効プラグイン数を表す。すなわち 22 個だ。
各プラグイン情報は i:●;s:●:"●.php"; でひとかたまりとなる。slidedeck プラグインの場合 i:16;s:23:"slidedeck/slidedeck.php"; 部分である。最初の i:16 がプラグインに振られた連番だ(slidedeck は 16)。
(3)今回の例では slidedeck プラグインを無効化する場合、以下のように変更する。
・a:22: →a:21:(プラグイン数が1つ減るから)
・i:16;s:23:"slidedeck/slidedeck.php"; → [削除]
・i:16;s:23:"slidedeck/slidedeck.php"; 以降の i:●: の●の数字をすべて1減らす。
(4)データベースの変更を保存する。
WordPress に戻って見てみると slidedeck プラグインが無効化され、エラーの文字列も表示されなくなった。
参考:
[Wordpress]データベースからプラグインを解除する | HappyQuality
https://happyquality.com/2014/07/07/2908.htm
デクリメントとは – IT用語辞典 Weblio辞書
https://www.weblio.jp/content/デクリメント