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/デクリメント