
🧹 Jak całkowicie usunąć wtyczkę WordPress: krok po kroku czyszczenie bazy danych i plików
Strona zaczęła zwalniać, kopia zapasowa rozrosła się do gigabajta, a w phpMyAdmin dziesiątki tabel z prefiksami wtyczek, które „usunęli" Państwo rok temu. Brzmi znajomo?
Standardowy przycisk „Usuń" w sekcji wtyczek kasuje jedynie folder z wp-content/plugins. Cała reszta, tabele, opcje, zadania crona, shortkody w postach, pozostaje w bazie i na dysku. Deweloperzy realizują czyszczenie na różne sposoby: jedni sumiennie sprzątają po sobie przez uninstall.php, inni nie ruszają niczego.
Poniżej pełny algorytm usuwania wtyczki bez pozostałości: od panelu administracyjnego po ręczne SQL. Z kopią zapasową na każdym etapie i dokładnymi instrukcjami dla popularnych wtyczek.
💡 Szybki przegląd:
- Usunięcie przez panel to tylko pierwszy krok; tabele, shortkody i zadania crona wymagają osobnego czyszczenia
- Przed jakimikolwiek manipulacjami w bazie, pełna kopia zapasowa (wbudowanymi narzędziami hostingu lub wtyczką)
- Dla WooCommerce, Yoast SEO, Wordfence i innych popularnych wtyczek istnieją własne stałe i zapytania SQL
- Zdezaktywowana wtyczka to nie wtyczka „wyłączona", lecz „uśpiona"; jej pliki są dostępne dla bezpośredniego wywołania i stanowią wektor ataku
Dlaczego przycisk „Usuń" nie wystarcza
WordPress podczas usuwania wtyczki wywołuje jej uninstall.php lub callback z głównego pliku. Działa to jednak tylko wtedy, gdy deweloper stworzył taki plik. W praktyce około połowa wtyczek z katalogu WordPress.org albo nie ma uninstall.php, albo implementuje go częściowo: usuwa folder, ale nie rusza bazy.
Co zostaje po standardowym usunięciu:
Typ pozostałości | Gdzie szukać | Ryzyko |
|---|---|---|
Tabele w BD |
| Wzrost bazy, spowolnienie zapytań |
Wiersze w |
| Zaśmiecenie opcji |
Wiersze w |
| Martwe dane przy pobieraniu postów |
Shortkody w treści | Tekst postów/stron | Uszkodzone |
Zadania crona |
| Zbędne żądania HTTP do wp-cron |
Pliki poza folderem wtyczki |
| Śmieci na dysku |
Reguły w | Katalog główny witryny | Konflikty z nowymi wtyczkami |
Szczególnie krytyczne są wiersze z flagą autoload: WordPress ładuje je przy każdym żądaniu. Pół setki zbędnych wierszy autoload dodaje 30-80 ms do odpowiedzi serwera. Na pierwszy rzut oka to drobiazgi, ale przy 100 000 odsłon miesięcznie jest to odczuwalny spadek wydajności.
Dezaktywacja vs usunięcie: jaka jest różnica
Różnica jest zasadnicza i warto ją rozumieć przed rozpoczęciem czyszczenia.
Kryterium | Dezaktywacja | Pełne usunięcie |
|---|---|---|
Pliki wtyczki | Pozostają w | Usunięte |
Kod | Nie jest wykonywany, dostępny do odczytu | Nieobecny |
Tabele BD | Zachowane | Zależy od dewelopera |
Ustawienia | Zachowane | Zależy od |
Aktualizacje | Przychodzą (dla darmowych z.org) | Nie przychodzą |
Podatności | Kod na serwerze, wektor ataku | Brak zagrożenia |
Odwracalność | Jedno kliknięcie, wtyczka znów aktywna | Tylko z kopii zapasowej |
Zdezaktywowana wtyczka to nie wtyczka „wyłączona", lecz „uśpiona". Pliki PHP fizycznie leżą na serwerze. Jeśli w kodzie znaleziono podatność, atakujący odwołuje się do pliku bezpośrednio przez ścieżkę w wp-content/plugins/, omijając logikę WordPress. Zapory WAF nie rozwiązują tego problemu: najlepszą ochroną jest całkowite usunięcie nieużywanego kodu z serwera.
Zasada jest prosta: jeśli nie korzystają Państwo z wtyczki dłużej niż tydzień, należy ją usunąć. Skonfigurowanie od nowa jest szybsze niż usuwanie skutków włamania przez dziurę w porzuconym kodzie.
Czyszczenie krok po kroku: 4 etapy
Krok 1: Usunięcie przez panel administracyjny
Pierwszy etap, standardowy. Należy wejść w Wtyczki → Zainstalowane, znaleźć potrzebną. Aktywne są podświetlone niebieskim paskiem, zdezaktywowane są bez niego.
Należy kliknąć „Usuń" pod nazwą, potwierdzić przyciskiem „Tak, usuń te pliki". WordPress wywoła uninstall.php wtyczki (jeśli istnieje) i usunie folder z wp-content/plugins.

W przypadku prostych wtyczek, lekkiego widżetu, zamiany logo na stronie logowania, na tym czyszczenie się kończy. Nie tworzą one tabel i nie zapisują danych w wp_postmeta. Jednak wtyczki do cache’owania, SEO, bezpieczeństwa, galerii i konstruktorów stron wymagają kontynuacji.
Krok 2: Czyszczenie plików przez FTP
Niektóre wtyczki tworzą foldery poza wp-content/plugins/. Typowe lokalizacje:
wp-content/uploads/plugin-name/, cache, skompresowane obrazy, wyeksportowane plikiwp-content/ngg/, NextGEN Gallerywp-content/ewww/, EWWW Image Optimizerwp-content/backup/, wtyczki do kopii zapasowych
Należy połączyć się z serwerem przez FTP (FileZilla, WinSCP) lub menedżer plików hostingu. Przejść do wp-content/, znaleźć folder z nazwą wtyczki i usunąć go. Przed usunięciem warto pobrać folder lokalnie, jeśli znajdowały się w nim przesłane przez użytkownika pliki, i przywrócić je.
Wtyczki do cache’owania (WP Rocket, W3 Total Cache, LiteSpeed Cache) dodatkowo zapisują dane w wp-content/cache/ i tworzą wp-content/advanced-cache.php. Plik advanced-cache.php należy usunąć ręcznie przez FTP, a w wp-config.php znaleźć i usunąć wiersz:
1 define('WP_CACHE', true);
Krok 3: Usunięcie shortkodów z treści
Wtyczki dodające shortkody (formularze, galerie, slidery, tabele) po usunięciu pozostawiają gołe [shortcode] w tekście postów. Wygląda to nieestetycznie i dezorientuje czytelnika.
Szybki sposób na wyciszenie nieużywanych shortkodów to jeden wiersz w functions.php aktywnego motywu:
1 add_shortcode('pluginshortcode', '__return_false');

Należy zastąpić pluginshortcode tagiem Państwa shortkodu. Na przykład: nggallery, gravityform lub contact-form-7. Funkcja __return_false zwraca false i shortkod znika z frontu bez usuwania z tekstu postów.
Kod należy dodać przez motyw potomny lub wtyczkę Code Snippets, zmiany w functions.php motywu nadrzędnego zostaną utracone podczas następnej aktualizacji. Jeśli zdecydują się Państwo później przywrócić wtyczkę, wystarczy usunąć ten wiersz.
Krok 4: Czyszczenie bazy danych
Najbardziej odpowiedzialny etap. Należy wykonać pełną kopię zapasową bazy przed jakimkolwiek zapytaniem SQL usuwającym dane, eksport przez phpMyAdmin zajmuje pół minuty i ratuje przed nieodwracalnymi błędami.
4a. Należy znaleźć tabele wtyczki. Proszę wejść do phpMyAdmin (przez cPanel lub panel administracyjny hostingu), wybrać bazę danych witryny. Szukać tabel z prefiksem wtyczki: wp_wc_* (WooCommerce), wp_yoast_* (Yoast SEO), wp_wf* (Wordfence). Zaznaczyć je, na dole wybrać „Drop" → potwierdzić.
4b. Automatyzacja przez Advanced Database Cleaner. Jeśli nie chce Pan/Pani pracować bezpośrednio w phpMyAdmin, proszę zainstalować Advanced Database Cleaner. Darmowa wtyczka skanuje bazę, znajduje osierocone tabele i wpisy, a następnie usuwa je jednym kliknięciem.
4c. Proszę wyczyścić wp_options. Nawet jeśli wtyczka nie tworzyła osobnych tabel, prawie na pewno zapisywała dane w wp_options. Proszę wykonać w phpMyAdmin (zakładka SQL):
1 SELECT * FROM wp_options WHERE option_name LIKE '%pluginname%';
Proszę zastąpić pluginname częścią nazwy wtyczki. Proszę upewnić się, że wiersze rzeczywiście dotyczą usuniętej wtyczki, a następnie:
1 DELETE FROM wp_options WHERE option_name LIKE '%pluginname%';
4d. Proszę wyczyścić zadania cron. Niektóre wtyczki rejestrują własne zdarzenia cron. Proszę zainstalować WP Crontrol, pokazuje on wszystkie zarejestrowane zadania cron na jednej liście. Proszę znaleźć zdarzenia z nazwą wtyczki i usunąć je ręcznie.
Specyfika usuwania popularnych wtyczek
Każda duża wtyczka pozostawia unikalny ślad. Poniżej znajdują się dokładne instrukcje dla najczęściej spotykanych.
WooCommerce
WooCommerce tworzy ponad 16 tabel w bazie danych. Aby podczas usuwania zostały one automatycznie wyczyszczone, proszę dodać w pliku wp-config.php (przed linią /* That's all, stop editing! */):
1 define('WC_REMOVE_ALL_DATA', true);
Stała ta zmusza WooCommerce do wywołania pełnego uninstall.php podczas usuwania, co spowoduje usunięcie wszystkich tabel wp_woocommerce_* i wp_wc_*, w tym produktów, zamówień i kuponów. Operacja jest nieodwracalna, dlatego kopia zapasowa jest obowiązkowa.
Po usunięciu wtyczki proszę dodatkowo sprawdzić wp_options, WooCommerce zapisuje tam dziesiątki wierszy z prefiksem woocommerce_:
1 SELECT * FROM wp_options WHERE option_name LIKE '%wc_%';

Jeśli wiersze zostały znalezione, a wtyczka jest już usunięta, proszę wykonać zapytanie DELETE z tym samym warunkiem.
Yoast SEO
Yoast SEO pozostawia wpisy w wp_postmeta i wp_usermeta, a także własne tabele wp_yoast_indexable i wp_yoast_seo_links.
Najpierw proszę wyczyścić wp_postmeta:
1 SELECT * FROM wp_postmeta WHERE meta_key LIKE '%yoast%';

Po upewnieniu się, że są to dane Yoast, proszę wykonać:
1 DELETE FROM wp_postmeta WHERE meta_key LIKE '%yoast%';
Następnie wp_usermeta:
1 SELECT * FROM wp_usermeta WHERE meta_key LIKE '%yoast%';

Proszę usunąć znalezione dane analogicznym zapytaniem DELETE. Yoast rejestruje również zdarzenie crona wpseo_onpage_fetch, proszę je usunąć przez WP Crontrol. Tabele wp_yoast_indexable i wp_yoast_seo_links proszę usunąć ręcznie przez phpMyAdmin.
Akismet
Akismet, standardowa wtyczka chroniąca przed spamem w komentarzach, jest domyślnie instalowana z WordPressem. Po jej usunięciu dane pozostają w wp_commentmeta:
1 SELECT * FROM wp_commentmeta WHERE meta_key LIKE '%akismet_%';

Następnie:
1 DELETE FROM wp_commentmeta WHERE meta_key LIKE '%akismet_%';
Jeśli na stronie są tysiące komentarzy, tabela wp_commentmeta może ważyć dziesiątki megabajtów. Po wyczyszczeniu proszę zoptymalizować tabelę:
1 OPTIMIZE TABLE wp_commentmeta;
Więcej sposobów walki ze spamem znajdą Państwo w naszym materiale jak zatrzymać spam w komentarzach WordPress: wszystkie 18 rozwiązań.
Gravity Forms
Gravity Forms tworzy 9 tabel w bazie danych (wp_gf_*, wp_rg_*). Przed usunięciem proszę przejść do Forms → Settings → Uninstall i potwierdzić. Następnie proszę usunąć wtyczkę z panelu administracyjnego.
Po usunięciu proszę sprawdzić wp_options:
1 SELECT * FROM wp_options WHERE option_name LIKE '%gravity%' OR option_name LIKE '%gf_%';

Znalezione wiersze proszę usunąć analogicznym zapytaniem DELETE.
Wordfence
Wordfence, jedna z najcięższych wtyczek bezpieczeństwa: tworzy 23 tabele z prefiksem wp_wf*. Standardowe usunięcie przez panel nie czyści ich.
Oficjalna wtyczka pomocnicza Wordfence Assistant została zamknięta przez dewelopera w grudniu 2025 roku. Dlatego czyścimy ręcznie: proszę usunąć główną wtyczkę Wordfence przez panel, następnie przejść do phpMyAdmin i wykonać:
1 SELECT * FROM wp_options WHERE option_name LIKE '%wordfence%' OR option_name LIKE '%wf%';
Znalezione wiersze proszę usunąć zapytaniem DELETE z tym samym warunkiem. Następnie proszę znaleźć i usunąć (DROP) wszystkie tabele z prefiksem wp_wf, jest ich zwykle 23, od wp_wfblockediplog do wp_wflivetraffichuman. Przez FTP proszę usunąć folder wp-content/wflogs/ i plik wordfence-waf.php w katalogu głównym witryny, jeśli pozostały.
NextGEN Gallery
Wtyczka tworzy 3 tabele (wp_ngg_*) i folder wp-content/ngg/ z przesłanymi galeriami.
Najpierw proszę usunąć wtyczkę przez panel administracyjny. Następnie przez FTP proszę usunąć folder wp-content/ngg/, uprzednio zapisując obrazy galerii, jeśli są potrzebne. W phpMyAdmin proszę wykonać:
1 SELECT * FROM wp_options WHERE option_name LIKE '%ngg%';
Znalezione wiersze proszę usunąć zapytaniem DELETE z tym samym warunkiem. Tabele wp_ngg_pictures, wp_ngg_galleries i wp_ngg_album proszę usunąć ręcznie (DROP).
EWWW Image Optimizer
EWWW przechowuje dane o każdym zoptymalizowanym obrazie w tabeli wp_ewwwio_images: ścieżkę do pliku, początkowy rozmiar, rozmiar po kompresji. Tworzy również folder wp-content/ewww/ z pamięcią podręczną.
Proszę usunąć folder przez FTP. Następnie w phpMyAdmin:
1 SELECT * FROM wp_options WHERE option_name LIKE '%ewww%';

Usuń znalezione wpisy i skasuj tabelę wp_ewwwio_images.
WP All Export
Wtyczka tworzy 4 tabele w bazie danych. Po usunięciu przez panel administracyjny wejdź do phpMyAdmin, znajdź tabele z prefiksem wp_pmxe_*, zaznacz je i wykonaj „Drop". Dodatkowo sprawdź wp_options pod kątem klucza pmxe, wtyczka przechowuje tam ustawienia ostatniego eksportu.
Więcej o pełnym cyklu usuwania wtyczek w instrukcji wideo poniżej.
⁉️🤔 Często zadawane pytania
Czy bezpiecznie jest usuwać tabele wtyczki bezpośrednio przez phpMyAdmin?
Jest to bezpieczne przy spełnieniu dwóch warunków: wykonał Pan/Pani pełną kopię zapasową bazy danych i zidentyfikował Pan/Pani tabele jako należące do już usuniętej wtyczki. Tabele zewnętrznych wtyczek zawsze mają rozpoznawalny prefiks:
wp_wc_,wp_yoast_lubwp_wf. Systemowych tabel WordPressa (wp_posts, wp_options, wp_users, wp_comments, wp_postmeta i wp_usermeta) nie wolno ruszać poleceniemDROP, można je czyścić wyłącznie selektywnymiDELETE.
Co zrobić, jeśli po usunięciu wtyczki strona wyświetla biały ekran?
Należy przywrócić wtyczkę z kopii zapasowej: wgrać folder przez FTP, zaimportować jej tabele. Przyczyną najprawdopodobniej jest plik
functions.phpmotywu, mógł w nim pozostać wywołanie funkcji wtyczki bez fallbacku. Proszę znaleźć takie wywołania i opakować je wfunction_exists()lub usunąć, a następnie powtórzyć usuwanie wtyczki.
Jak znaleźć wszystkie ślady wtyczki w bazie danych?
Proszę zainstalować wtyczkę Advanced Database Cleaner. Skanuje ona wszystkie tabele pod kątem osieroconych danych i pokazuje pełną listę: tabele, wiersze w
wp_optionsiwp_postmeta, zadania cron. Jest to szybsze i bezpieczniejsze niż ręczne wyszukiwanie przez phpMyAdmin.
Czy trzeba usuwać wtyczki dostarczone razem z motywem?
Tak, jeśli ich Pan/Pani nie używa. Wtyczki wchodzące w skład motywów, WPBakery Page Builder, Slider Revolution, ACF Pro, często mają ograniczoną licencję i nie otrzymują aktualizacji bezpieczeństwa. Zdezaktywowany, przestarzały WPBakery ze znaną podatnością to prosta droga do włamania. Jeśli nie są używane, należy je usunąć.
Czy można przywrócić wtyczkę po całkowitym usunięciu?
Tylko z kopii zapasowej. Po wyczyszczeniu tabel i
wp_optionswszystkie ustawienia wtyczki są bezpowrotnie tracone. Właśnie dlatego powyższy algorytm zbudowany jest od prostego do radykalnego: najpierw standardowe usunięcie (odwracalne), potem czyszczenie plików i dopiero na końcu baza danych. Proszę przechodzić etapy sekwencyjnie, nie przeskakiwać od razu do phpMyAdmin.
Czy dane wtyczki pozostały w WordPress Multisite?
W Multisite każda podstrona ma własne tabele:
wp_2_options,wp_2_postmetai tak dalej. Po usunięciu wtyczki przez superadministratora proszę sprawdzić tabele każdej podstrony,wp_*_optionsiwp_*_postmetadla wszystkich ID blogów. Wtyczka mogła być aktywowana na poszczególnych stronach sieci i pozostawić wpisy w ich tabelach.
Podsumowanie: kiedy pełne czyszczenie jest uzasadnione
Jeśli ma Pan/Pani niewielką stronę i usuwa wtyczkę raz na pół roku, standardowe usunięcie przez panel i jednorazowe wyczyszczenie wp_options jest wystarczające.
Jeśli jednak strona ma kilka lat, przewinęły się przez nią dziesiątki wtyczek, a kopia zapasowa rozrosła się do gigabajta, chirurgiczne czyszczenie według powyższej instrukcji odczuwalnie zmniejszy bazę danych i przyspieszy panel administracyjny. W praktyce czyściliśmy tysiące osieroconych wpisów w wp_postmeta i dziesiątki zbędnych tabel, czas odpowiedzi panelu administracyjnego skracał się niemal o połowę.
Proszę przyjąć zasadę: usunął Pan/usunęła Pani wtyczkę, proszę przejść checklistę (FTP → wp_options → cron → tabele). Dziesięć minut dziś oszczędza godziny jutro, gdy rozdęta baza danych kładzie stronę w szczycie ruchu.
A która wtyczka pozostawiła najwięcej śmieci po usunięciu na Pana/Pani stronie? Proszę napisać w komentarzach.



