WordPressプラグインを強制的に無効化にするSQL

何度もやってしまったので備忘録として。。。

はじめに

WordPressでインストールしたプラグインの不具合が原因で WSoD(真っ白な画面) が発生したり、SiteGuardでログインページを忘れてしまったりして、正常なログインが出来なくなってしまった場合の対処方法として、プラグインを強制的に無効化する方法があります。

プラグインを無効化する方法として以下の2点が考えられます。

  1. wp-content/plugins 配下の該当プラグインディレクトリ (または全てのプラグインディレクトリ)を削除する
  2. wp_options に保存された有効化されたプラグイン情報を空にする

本稿では、2について記載します。

手順

MySQLにログインする

大半のWordPressはMySQL(またはMariaDB)だと思いますので以下でログイン出来ます。

$ mysql -u <user_name> -p <database_name>
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.

ログインに必要なユーザーとパスワードはDBのセットアップ時に設定したものを使います。Amazon Lightsailを使っている場合は /home/bitnami/bitnami_application_password にパスワードの記載があります。
データベース名が不明な場合は指定せずに show databases でそれっぽいのを見つけるのもありかと。

active_plugins の更新

有効になっているプラグインは wp_options の option_name = ‘active_plugins’ にシリアライズして保存されているので、ここを空で書き換えます。実際に流すSQLは以下。

BEGIN;
SELECT * FROM wp_options WHERE option_name = 'active_plugins';
UPDATE wp_options SET option_value = ‘a:0:{}’ WHERE option_name = ‘active_plugins’;
SELECT * FROM wp_options WHERE option_name = 'active_plugins';
#COMMIT;

WordPressにログインしてプラグインを有効化する

上記の方法ではプラグインを一括無効化したのと同じことになるので、管理画面からプラグインを有効化する必要があります。
このとき、以下の2点に注意する必要があります。

  • 不具合(WSoDなど)の出ているプラグインを再度有効化する前に原因を取り除くこと
    • 取り除かないまま有効化すると同じことを何度もすることになる。。
  • プラグインによっては、register_activation_hook で設定値の初期化処理を行っているものがある
    • その場合はプラグイン無効化以前に設定した値に戻す必要がある
タイトルとURLをコピーしました