2026年5月20日

2026年5月20日

WordPressの不要プラグインを特定・削除する方法

はじめに

WordPressにプラグインが増えすぎると、ページ速度の低下・セキュリティリスク・競合の原因になります。定期的に不要プラグインを棚卸しして、必要最小限の構成に保つことが重要です。

症状・原因

  • プラグインが多すぎてサイトが重くなっている
  • 使っていないプラグインが無効化されたまま残っている
  • どのプラグインがパフォーマンスに影響しているか分からない
  • プラグインの整理・削除を安全に行いたい

解決手順

ステップ1:現在のプラグイン一覧を確認する

# 全プラグイン一覧(状態付き)
wp plugin list --format=table

# 有効なプラグインのみ
wp plugin list --status=active --format=table

# 無効なプラグインのみ(削除候補)
wp plugin list --status=inactive --format=table

# 更新が必要なプラグイン
wp plugin list --update=available --format=table

ステップ2:不要プラグインの判断基準

削除を検討すべきプラグイン:
→ 6ヶ月以上更新されていない(wp plugin list で確認)
→ 無効化されたまま1ヶ月以上放置
→ 現在のWordPressバージョンと互換性テスト未実施
→ 機能が別のプラグインと重複している
→ 開発サイト用にインストールしたまま残っている

機能の重複例:
→ SEO: Yoast + RankMath → どちらか1つに絞る
→ キャッシュ: WP Rocket + W3TC → どちらか1つ
→ フォーム: CF7 + WPForms → どちらか1つ
→ セキュリティ: WordFence + iThemes → どちらか1つ

ステップ3:プラグインのパフォーマンス影響を測定する

# Query Monitor でページ読み込み時間を比較
# プラグインを1つ無効化して表示速度の変化を確認

# プラグインのリクエスト数をcurlで確認
curl -o /dev/null -s -w "%{time_total}\n" https://example.com/

# 各プラグインが追加するCSSファイルを確認
wp eval "global \$wp_styles; print_r(array_keys(\$wp_styles->registered));"

# 各プラグインが追加するJSファイルを確認
wp eval "global \$wp_scripts; print_r(array_keys(\$wp_scripts->registered));"

ステップ4:安全に無効化・削除する

# プラグインを無効化(データは残る)
wp plugin deactivate contact-form-7

# 無効化してから削除
wp plugin deactivate hello --uninstall

# 複数プラグインを一括削除
wp plugin delete hello akismet

# 全無効プラグインを削除(注意: 元に戻せない)
wp plugin list --status=inactive --field=name | \
  xargs wp plugin delete

削除前の確認事項:

□ データベースにプラグイン専用テーブルがないか確認
  wp db query "SHOW TABLES LIKE 'wp_%'"
□ wp_options にプラグインの設定が残らないか確認
  wp option list --search="plugin_name_*" --format=table
□ アップロードファイルに依存するデータがないか確認

ステップ5:削除後のクリーンアップ

# オプションテーブルの孤立データを削除
wp option list --autoload=yes --format=table | head -50

# 使われなくなったトランジェントを削除
wp transient delete --all

# データベースの最適化
wp db optimize

# パーマリンクを再保存(プラグイン削除後は必須)
wp rewrite flush

ステップ6:プラグイン管理のベストプラクティス

// functions.php — 特定のユーザーロールのみプラグイン管理を許可
add_filter('user_has_cap', function(array $caps, array $cap, array $args): array {
    if (in_array('activate_plugins', $cap, true)) {
        // 管理者のみプラグイン操作を許可(マルチサイト対応)
        if (!current_user_can('manage_network')) {
            $caps['activate_plugins'] = false;
        }
    }
    return $caps;
}, 10, 3);

注意事項

  • プラグインを削除すると設定データが失われる場合があります。事前にバックアップを取ってください
  • eコマースプラグイン(WooCommerce等)は関連プラグインと依存関係があります。削除順序に注意してください
  • ステージング環境でテストしてから本番環境で実施してください

まとめ

wp plugin list --status=inactive で未使用プラグインを洗い出し、6ヶ月以上更新のないもの・機能が重複するものを優先的に削除します。削除後は wp transient delete --allwp rewrite flush で後処理を忘れずに行ってください。

お気軽にご相談ください

お見積りへ お問い合わせへ