WordPressプラグインの削除:管理画面で削除した後に残るDBまで消す方法

公正取引委員会の広告文 Ver 3.1
公正取引委員会の広告文 Ver 3.2(モバイル専用)

WordPressプラグインの削除は管理画面のボタン一つで終わりますが、プラグインが作ったテーブルや設定はデータベースにそのまま残ることがよくあります。このサイトにも、以前削除した広告・コメントの2つのプラグインのテーブル8個とオプション38行が、2026-10-09時点で残っています。

管理画面での削除方法から、残ったショートコード・フォルダ・DBを整理する方法まで順にまとめました。

1️⃣ 管理画面でプラグインを削除する

[プラグイン] > [インストール済みプラグイン]で、まず[無効化]を押してから、同じ行に表示される[削除]を押します。

WordPressプラグインの削除-管理画面

プラグインに後片付けのコードがあればこのとき一緒に実行され、なければファイルだけが消えてデータは残ります。

2️⃣ 削除してもデータが残る理由

WordPressはプラグインを削除するとき、そのプラグインの[uninstall.php]ファイルか、[register_uninstall_hook]で登録された関数を実行します。データの削除はこのコードに任されているため、コードがない、または一部しか消さないプラグインはテーブルやオプションを残します。

開発者が意図的に残す場合もあり、再インストールしたときに設定をそのまま戻せるようにするためです。Wordfenceのように設定画面にデータも一緒に消す選択肢を用意するプラグインもあり、多言語プラグインのPolylangも同じ選択肢を用意しています。

WordPressプラグインの削除と無効化-削除オプションのあるWordfenceプラグイン
Wordfenceプラグインの削除オプション

3️⃣ 残ったデータがサイトに与える影響

残ったオプションのうち[autoload]が有効な行は、ページを開くたびにほかの設定と一緒にメモリへ読み込まれます。このサイトに残っていたwpDiscuzの[wc_options](15KB)とAdvanced Adsの[advanced-ads-ab-module](14KB)がそうした行でした。

ただしこのサイトのautoload合計は約392KBで、そのうち残った行は約39KBなので、体感できるほどの速度差にはなりません。WordPressの[サイトヘルス]画面は、autoload合計が800KBを超えると警告を表示します。

残った23行のautoloadをオフにすると、Advanced Database Cleanerの[オートロードサイズ]が391.52KBから353.36KBに減りました。

Advanced Database Cleanerのオートロードサイズ391.52KB(整理前)
Advanced Database Cleanerのオートロードサイズ353.36KB(整理後)

普段は問題になりません。キャッシュされたページを受け取る訪問者はPHPを通らないため、autoloadのまとまりを読み込むのは、管理画面・キャッシュ削除直後の最初の訪問・ボットのようにキャッシュを通らないリクエストだけです。こうしたリクエストが一度に集中すると、リクエストの数だけautoloadのまとまりをメモリに展開するため、autoloadが大きいサイトほどサーバー負荷が急に増えます。

autoloadがオフのオプションや残ったテーブルは、そのプラグインがなければ読み込まれないため速度とは関係がなく、データベースの容量とバックアップのサイズが増えるだけです。

4️⃣ 残った痕跡を消す

データベースに手を入れる前に、まず全体をバックアップします。

🔲 ショートコード

プラグインが記事に入れていたショートコードは、プラグインを削除すると角括弧の文字のまま本文に表示されます。記事を一つずつ直すまでは、テーマの[functions.php]に下の1行を入れて、そのショートコードが何も出力しないようにします。

add_shortcode( 'pluginshortcode', '__return_false' );

このサイトも表プラグインのショートコードを10個ほど使っていましたが、セキュリティ問題でプラグインを削除したときにショートコードとテーブルを一つずつ整理し、それ以降はショートコードを使っていません。

🔲 プラグインフォルダ

管理画面で消えなかったフォルダは、FTP・cPanel・SSHで[wp-content/plugins]の下から直接削除します。

🔲 DBのテーブル・行(phpMyAdmin)

ほとんどのホスティングがphpMyAdminを提供しています。

WordPressのphpMyAdmin-テーブル選択後のパス

残ったテーブルは、[構造]タブでプラグイン名が入ったテーブルを探して削除します。下はYoast SEOを例にした画面です。

WordPressのphpMyAdmin-構造タブでテーブルを探して削除する方法

オプションのような行は、[検索]でワイルドカード[%]を付けて[%yoast%]のように探します。

WordPressのphpMyAdmin-検索で行を探して削除する方法1
WordPressのphpMyAdmin-検索で行を探して削除する方法2

[行フィルタ]でもう一度絞り込むと、Yoast SEOだけに関係する行かどうかを確認できます。

WordPressのphpMyAdmin-検索で行を探して削除する方法3

行は主に[wp_options]・[wp_postmeta]・[wp_usermeta]に残り、テーブル名の前の[wp_]はサイトによって異なることがあります。名前だけを見て消すと他のプラグインが使う行まで消すことがあるため、どのプラグインのものか確認した行だけを削除します。

5️⃣ DB整理プラグイン

phpMyAdminの代わりに管理画面で整理するなら、Advanced Database Cleanerを使います。このサイトでも使っており、オプションやテーブルごとにどのプラグインのものかを[所属]で表示するため、消してよい行を見分けられます。

[所属]が[まだスキャンされていません]の行は、使われていない行ではなく、持ち主がまだ分からない行です。このサイトでも見慣れない名前の多くが、Kadence Blocks Pro・WP Ghostのように現在有効なプラグインのライセンスや設定で、こうした行を消すとライセンスが外れたり設定が初期化されたりします。

そのため、削除したプラグインの行でもすぐには消さず、まずautoloadをオフにします。値はそのまま残るのでいつでも元に戻せ、数日間サイトに問題がなければそのときに削除します。

削除したプラグインの残ったオプション-autoload auto
削除したプラグインの残ったオプション-autoload off

WP-Optimizeも無料版で残ったテーブルを削除できます。

WP-Optimizeプラグイン-残ったデータベーステーブルの削除
WP-OptimizeのDBテーブル削除機能
プラグイン(石壁に光るネオンサイン)

🔢 FAQ & おすすめコンテンツ

WordPressは有効なプラグインだけを読み込むため、無効化したプラグインのコードはページを開いても実行されません。ただしファイルがサーバーに残っている間は更新も続けて管理する必要があるため、再び使う予定がなければ削除します。

有効なプラグインには[削除]が表示されないため、まず[無効化]を押します。それでも表示されない場合は、 wp-config.phpに[DISALLOW_FILE_MODS]がtrueで入っていないか確認します。この値が有効だと、プラグインのインストール・更新・削除がすべてブロックされます。マルチサイトでは特権管理者だけが削除できます。

[wp plugin uninstall プラグイン名 --deactivate]は、無効化したあとプラグインの後片付けコードを実行し、ファイルまで削除します。[wp plugin delete]は後片付けコードを実行せずファイルだけを消すため、データまで整理するならuninstallを使います。

[wp-content/mu-plugins]フォルダのファイルは、有効化の手順なしに常に実行される必須プラグインのため、管理画面に[削除]リンクがありません。消すにはFTPやSSHでそのフォルダのファイルを直接削除します。

ℹ️ 提携について
当サイトのコンテンツにはアフィリエイトリンクが含まれています。訪問者がこのリンクを通じて商品やサービスを購入すると、当サイトは販売元から手数料を受け取ります。この過程において、購入者が支払う金額(イベント割引適用で金額が下がります↓)は上昇しません。掲載されている価格・割引・在庫情報は作成時点のものであり、実際とは異なる場合がありますので、ご購入前に販売元にて最終確認をお願いいたします。商品の選定および評価は独自の基準に基づいて行われており、手数料の支払いの有無は紹介順や評価内容に影響を与えません。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

人間であることを証明してください: 9   +   8   =