Skip to content

Kaikki WordPressistä, web-kehityksestä — ja paljon muuta

🧹 Kuinka poistaa WordPress-liitännäinen kokonaan: vaiheittainen tietokannan ja tiedostojen siivous

🧹 Kuinka poistaa WordPress-liitännäinen kokonaan: vaiheittainen tietokannan ja tiedostojen siivous

Sivustosi hidastuu mateluksi, varmuuskopiot paisuvat gigatavun kokoisiksi ja phpMyAdmin näyttää kymmeniä tauluja, joiden etuliitteet ovat peräisin liitännäisistä, jotka "poistit" vuosi sitten. Kuulostaako tutulta?

Liitännäiset-osion tavallinen "Poista"-painike poistaa vain kansion wp-content/plugins-hakemistosta. Kaikki muu (taulut, asetukset, cron-työt, artikkeleissa olevat shortcodet) jää tietokantaan ja levylle. Kehittäjät hoitavat siivouksen eri tavoin: jotkut siivoavat tunnollisesti jälkensä uninstall.php-tiedoston avulla, kun taas toiset jättävät kaiken ennalleen.

Alla on täydellinen toimintamalli liitännäisen poistamiseksi jälkiä jättämättä: hallintapaneelista manuaalisiin SQL-kyselyihin. Mukana varmuuskopiot joka vaiheessa ja tarkat ohjeet suosituille liitännäisille.

💡 Nopea yleiskatsaus:

  • Hallintapaneelin kautta poistaminen on vasta ensimmäinen askel; taulut, shortcodet ja cron-työt vaativat erillisen siivouksen
  • Ennen mitään tietokantatoimenpiteitä, tee täydellinen varmuuskopio (käyttäen palveluntarjoajan sisäänrakennettuja työkaluja tai liitännäistä)
  • WooCommercella, Yoast SEO:lla, Wordfencellä ja muilla suosituilla liitännäisillä on omat vakionsa ja SQL-kyselynsä
  • Deaktivoitu liitännäinen ei ole "pois päältä" vaan "nukkumassa"; sen tiedostot ovat edelleen käytettävissä suoraa käyttöä varten ja muodostavat hyökkäysvektorin

Miksi "Poista"-painike ei riitä

WordPress kutsuu liitännäisen uninstall.php-tiedostoa tai pää tiedoston takaisinkutsua sitä poistettaessa. Mutta tämä toimii vain, jos kehittäjä on luonut kyseisen tiedoston. Käytännössä noin puolet WordPress.orgin hakemiston liitännäisistä joko puuttuu uninstall.php tai toteuttaa sen puutteellisesti: ne poistavat kansion, mutta jättävät tietokannan koskemattomaksi.

Mitä jää jäljelle tavallisen poiston jälkeen:

Jäänteen tyyppi

Mistä etsiä

Riski

Tietokantataulut

wp_* (liitännäisen etuliite)

Tietokannan kasvu, hitaammat kyselyt

Rivit wp_options-taulussa

option_name LIKE %pluginname%

Sotkuiset autoload-asetukset

Rivit wp_postmeta-taulussa

meta_key LIKE %pluginname%

Kuollutta dataa artikkeleita haettaessa

Shortcodet sisällössä

Artikkelin/sivun teksti

Rikkinäiset [shortcode]-tagit julkisella puolella

Cron-työt

wp_optionscron

Tarpeettomat HTTP-pyynnöt wp-croniin

Tiedostot liitännäiskansion ulkopuolella

wp-content/uploads/

Levytilan sotku

Säännöt .htaccess-tiedostossa

Sivuston juuri

Ristiriidat uusien liitännäisten kanssa

Rivit, joissa on autoload-lippu, ovat erityisen kriittisiä: WordPress lataa ne jokaisella pyynnöllä. Viisikymmentä ylimääräistä autoload-riviä lisää palvelimen vasteaikaan 30-80 ms. Ensi silmäyksellä mitätöntä, mutta 100 000 kuukausittaisella näyttökerralla se on huomattava suorituskykyisku.

Deaktivointi vs. poistaminen: mikä on ero

Ero on perustavanlaatuinen, ja se on hyvä ymmärtää ennen siivouksen aloittamista.

Kriteeri

Deaktivointi

Täydellinen poisto

Liitännäistiedostot

Säilyvät wp-content/plugins/-kansiossa

Poistettu

Koodi

Ei suoriteta, luettavissa

Poissa

Tietokantataulut

Säilytetty

Riippuu kehittäjästä

Asetukset

Säilytetty

Riippuu uninstall.php-tiedostosta

Päivitykset

Saapuvat (ilmaisille liitännäisille.org:sta)

Eivät saavu

Haavoittuvuudet

Palvelimella oleva koodi on hyökkäysvektori

Ei uhkaa

Palautettavuus

Yksi klikkaus ja liitännäinen on taas aktiivinen

Vain varmuuskopiosta

Deaktivoitu liitännäinen ei ole "pois päältä" vaan "nukkumassa". PHP-tiedostot sijaitsevat fyysisesti palvelimella. Jos koodista löytyy haavoittuvuus, hyökkääjä voi käyttää tiedostoa suoraan polun kautta wp-content/plugins/-kansiossa ohittaen WordPressin logiikan. WAF-palomuurit eivät ratkaise tätä ongelmaa: paras suoja on poistaa käyttämätön koodi palvelimelta kokonaan.

Sääntö on yksinkertainen: jos et ole käyttänyt liitännäistä yli viikkoon, poista se. Uudelleenmäärittely on nopeampaa kuin tietomurron käsittely hylätyn koodin aukon kautta.

Vaiheittainen siivous: 4 vaihetta

Vaihe 1: Poistaminen hallintapaneelin kautta

Ensimmäinen vaihe on tavanomainen. Mene kohtaan Liitännäiset → Asennetut, etsi tarvitsemasi. Aktiiviset liitännäiset on korostettu sinisellä palkilla, deaktivoidut eivät.

Klikkaa "Poista" nimen alta, vahvista "Kyllä, poista nämä tiedostot" -painikkeella. WordPress kutsuu liitännäisen uninstall.php-tiedostoa (jos se on olemassa) ja poistaa kansion wp-content/plugins-hakemistosta.

WordPress-lisäosaluettelo ja poistopainike

Yksinkertaisten liitännäisten (kevyt widget, kirjautumissivun logon vaihto) kohdalla siivous päättyy tähän. Ne eivät luo tauluja tai kirjoita wp_postmeta-tauluun. Mutta välimuisti-, SEO-, tietoturva-, galleria- ja sivunrakennusliitännäiset vaativat jatkotoimia.

Vaihe 2: Tiedostojen siivous FTP:n kautta

Jotkin liitännäiset luovat kansioita wp-content/plugins/-hakemiston ulkopuolelle. Tyypillisiä sijainteja:

  • wp-content/uploads/plugin-name/: välimuisti, pakatut kuvat, viedyt tiedostot
  • wp-content/ngg/: NextGEN Gallery
  • wp-content/ewww/: EWWW Image Optimizer
  • wp-content/backup/: varmuuskopioliitännäiset

Yhdistä palvelimelle FTP:llä (FileZilla, WinSCP) tai palveluntarjoajan tiedostonhallinnalla. Siirry kohtaan wp-content/, etsi liitännäisen nimellä oleva kansio ja poista se. Ennen poistamista lataa kansio paikallisesti; jos se sisälsi käyttäjien latauksia, palauta ne.

Välimuistiliitännäiset (WP Rocket, W3 Total Cache, LiteSpeed Cache) kirjoittavat lisäksi kansioon wp-content/cache/ ja luovat tiedoston wp-content/advanced-cache.php. Poista advanced-cache.php-tiedosto manuaalisesti FTP:n kautta, ja etsi wp-config.php-tiedostosta ja poista tämä rivi:

1define('WP_CACHE', true);

Vaihe 3: Shortcodejen poistaminen sisällöstä

Liitännäiset, jotka lisäävät shortcodeja (lomakkeet, galleriat, liukusäätimet, taulukot), jättävät paljaan [shortcode]-tagin artikkelitekstiin poiston jälkeen. Se näyttää sotkuiselta ja hämmentää lukijoita.

Nopea tapa hiljentää käyttämättömät shortcodet on yksi rivi aktiivisen teemasi functions.php-tiedostossa:

1add_shortcode('pluginshortcode', '__return_false');
Koodi functions.php-tiedostossa lisäosan shortcoden poistamiseksi käytöstä

Korvaa pluginshortcode omalla shortcode-tagillasi. Esimerkiksi: nggallery, gravityform tai contact-form-7. __return_false-funktio palauttaa false, ja shortcode katoaa julkiselta puolelta ilman, että sitä poistetaan artikkelitekstistä.

Lisää koodi lapsiteeman tai Code Snippets -liitännäisen kautta; muokkaukset pääteeman functions.php-tiedostoon katoavat seuraavassa päivityksessä. Jos päätät palauttaa liitännäisen myöhemmin, poista vain tämä rivi.

Vaihe 4: Tietokannan siivous

Kriittisin vaihe. Tee täydellinen tietokantavarmuuskopio ennen mitään poistavaa SQL-kyselyä; vienti phpMyAdminin kautta vie puoli minuuttia ja pelastaa peruuttamattomilta virheiltä.

4a. Etsi liitännäisen taulut. Mene phpMyAdminiin (cPanelin tai palveluntarjoajasi hallintapaneelin kautta), valitse sivuston tietokanta. Etsi tauluja, joissa on liitännäisen etuliite: wp_wc_* (WooCommerce), wp_yoast_* (Yoast SEO), wp_wf* (Wordfence). Valitse ne, valitse alhaalta "Drop" → vahvista.

4b. Automaatio Advanced Database Cleaner -lisäosalla. Jos et halua työskennellä suoraan phpMyAdminissa, asenna Advanced Database Cleaner. Tämä ilmainen lisäosa skannaa tietokannan, löytää orvot taulut ja tietueet ja poistaa ne yhdellä klikkauksella.

4c. Siivoa wp_options. Vaikka lisäosa ei olisi luonut erillisiä tauluja, se kirjoitti lähes varmasti wp_options-tauluun. Suorita phpMyAdminissa (SQL-välilehti):

1SELECT * FROM wp_options WHERE option_name LIKE '%pluginname%';

Korvaa pluginname osalla lisäosan nimeä. Varmista, että rivit todella kuuluvat poistetulle lisäosalle, ja sitten:

1DELETE FROM wp_options WHERE option_name LIKE '%pluginname%';

4d. Siivoa cron-työt. Jotkin lisäosat rekisteröivät omia cron-tapahtumiaan. Asenna WP Crontrol; se näyttää kaikki rekisteröidyt cron-työt yhdessä listassa. Etsi tapahtumat, joissa on lisäosan nimi, ja poista ne manuaalisesti.

Suosittujen lisäosien poistamisen yksityiskohdat

Jokainen merkittävä lisäosa jättää omanlaisensa jäljen. Alla tarkat ohjeet yleisimmille.

WooCommerce

WooCommerce luo tietokantaan yli 16 taulua. Jotta ne siivotaan automaattisesti poiston yhteydessä, lisää tiedostoon wp-config.php (ennen riviä /* That's all, stop editing! */):

1define('WC_REMOVE_ALL_DATA', true);

Tämä vakio pakottaa WooCommercen kutsumaan täydellistä uninstall.php-tiedostoaan poiston yhteydessä; kaikki wp_woocommerce_*- ja wp_wc_*-taulut poistetaan, mukaan lukien tuotteet, tilaukset ja kupongit. Toimenpide on peruuttamaton, joten varmuuskopiointi on pakollista.

Lisäosan poistamisen jälkeen tarkista vielä wp_options, sillä WooCommerce kirjoittaa sinne kymmeniä rivejä woocommerce_-etuliitteellä:

1SELECT * FROM wp_options WHERE option_name LIKE '%wc_%';
SQL-kysely WooCommerce-tietueiden löytämiseksi tietokannasta

Jos rivejä löytyy ja lisäosa on jo poistettu, suorita DELETE-kysely samalla ehdolla.

Yoast SEO

Yoast SEO jättää tietueita tauluihin wp_postmeta ja wp_usermeta sekä omiin tauluihinsa wp_yoast_indexable ja wp_yoast_seo_links.

Puhdista ensin wp_postmeta:

1SELECT * FROM wp_postmeta WHERE meta_key LIKE '%yoast%';
Yoast SEO -metatietueiden etsiminen wp_postmeta-taulusta

Kun olet varmistanut, että kyseessä on Yoastin data, suorita:

1DELETE FROM wp_postmeta WHERE meta_key LIKE '%yoast%';

Sitten wp_usermeta:

1SELECT * FROM wp_usermeta WHERE meta_key LIKE '%yoast%';
Yoast SEO -tietueiden etsiminen wp_usermeta-taulusta

Poista löytämäsi vastaavalla DELETE-kyselyllä. Yoast rekisteröi myös cron-tapahtuman wpseo_onpage_fetch; poista se WP Crontrolin kautta. Pudota wp_yoast_indexable- ja wp_yoast_seo_links-taulut manuaalisesti phpMyAdminin kautta.

Akismet

Akismet on vakiona WordPressin mukana tuleva kommenttiroskapostin estolisäosa. Poiston jälkeen sen data jää tauluun wp_commentmeta:

1SELECT * FROM wp_commentmeta WHERE meta_key LIKE '%akismet_%';
SQL-kysely Akismet-tietojen löytämiseksi kommenteista

Sitten:

1DELETE FROM wp_commentmeta WHERE meta_key LIKE '%akismet_%';

Jos sivustolla on tuhansia kommentteja, wp_commentmeta voi painaa kymmeniä megatavuja. Siivouksen jälkeen optimoi taulu:

1OPTIMIZE TABLE wp_commentmeta;

Lisää keinoja roskapostin torjuntaan löydät artikkelistamme miten pysäyttää WordPressin kommenttiroskaposti: kaikki 18 ratkaisua.

Gravity Forms

Gravity Forms luo tietokantaan 9 taulua (wp_gf_*, wp_rg_*). Ennen poistoa mene kohtaan Lomakkeet → Asetukset → Poista asennus ja vahvista. Poista sitten lisäosa hallintapaneelista.

Poiston jälkeen tarkista wp_options:

1SELECT * FROM wp_options WHERE option_name LIKE '%gravity%' OR option_name LIKE '%gf_%';
SQL-kysely Gravity Formsin wp_options-taulun puhdistamiseksi

Poista löytyneet rivit vastaavalla DELETE-kyselyllä.

Wordfence

Wordfence on yksi "raskaimmista" tietoturvalisäosista: se luo 23 taulua wp_wf*-alkuisella etuliitteellä. Tavallinen poisto hallintapaneelin kautta ei siivoa niitä.

Virallinen apulisäosa Wordfence Assistantin kehittäjä lopetti sen ylläpidon joulukuussa 2025. Siivoamme siis käsin: poista pääasiallinen Wordfence-lisäosa hallintapaneelista, mene sitten phpMyAdminiin ja suorita:

1SELECT * FROM wp_options WHERE option_name LIKE '%wordfence%' OR option_name LIKE '%wf%';

Poista löytyneet rivit DELETE-kyselyllä samalla ehdolla. Etsi ja pudota sen jälkeen kaikki taulut, joiden etuliite on wp_wf (niitä on yleensä 23, aina taulusta wp_wfblockediplog tauluun wp_wflivetraffichuman). Poista FTP:n kautta kansio wp-content/wflogs/ ja tiedosto wordfence-waf.php sivuston juuresta, jos ne ovat jääneet jäljelle.

Lisäosa luo 3 taulua (wp_ngg_*) ja kansion wp-content/ngg/, jossa ladatut galleriat sijaitsevat.

Poista ensin lisäosa hallintapaneelista. Poista sitten FTP:n kautta kansio wp-content/ngg/ ja tallenna galleriakuvat ensin, jos tarvitset niitä. Suorita phpMyAdminissa:

1SELECT * FROM wp_options WHERE option_name LIKE '%ngg%';

Poista löytyneet rivit DELETE-kyselyllä samalla ehdolla. Pudota taulut wp_ngg_pictures, wp_ngg_galleries ja wp_ngg_album käsin.

EWWW Image Optimizer

EWWW tallentaa tiedot jokaisesta optimoidusta kuvasta wp_ewwwio_images-tauluun: tiedostopolun, alkuperäisen koon, koon pakkauksen jälkeen. Se luo myös wp-content/ewww/-kansion, jossa on välimuistia.

Poista kansio FTP:n kautta. Sitten phpMyAdminissa:

1SELECT * FROM wp_options WHERE option_name LIKE '%ewww%';
SQL-kysely EWWW Image Optimizer -asetusten puhdistamiseksi

Poista löytämäsi ja pudota wp_ewwwio_images-taulu.

WP All Export

Lisäosa luo tietokantaan 4 taulua. Kun olet poistanut sen hallintapaneelin kautta, mene phpMyAdminiin, etsi taulut, joiden etuliite on wp_pmxe_*, valitse ne ja suorita "Drop". Tarkista lisäksi wp_options-taulusta avain pmxe; lisäosa tallentaa sinne viimeisimmät vientiasetukset.

Lisätietoja täydellisestä lisäosan poistosyklistä on alla olevalla video-ohjeella.

⁉️🤔 Usein kysytyt kysymykset

Onko turvallista poistaa lisäosien tauluja suoraan phpMyAdminin kautta?

Se on turvallista kahdella ehdolla: olet tehnyt täydellisen tietokantavarmuuskopion ja olet varmistanut, että taulut kuuluvat jo poistetulle lisäosalle. Kolmannen osapuolen lisäosien tauluilla on aina tunnistettava etuliite: wp_wc_, wp_yoast_ tai wp_wf. Älä koske WordPressin järjestelmätauluihin (wp_posts, wp_options, wp_users, wp_comments, wp_postmeta ja wp_usermeta) DROP-komennolla; niitä voi siivota vain valikoivalla DELETE-komennolla.

Mitä teen, jos sivusto näyttää valkoista ruutua lisäosan poiston jälkeen?

Palauta lisäosa varmuuskopiosta: siirrä kansio FTP:llä, tuo sen taulut takaisin. Syy on todennäköisimmin teeman functions.php-tiedostossa, johon on saattanut jäädä kutsu lisäosan funktioon ilman varatoimintoa. Etsi tällaiset kutsut ja kääri ne function_exists()-tarkistuksen sisään tai poista ne, ja toista sitten lisäosan poisto.

Miten löydän kaikki lisäosan jäljet tietokannasta?

Asenna Advanced Database Cleaner -lisäosa. Se skannaa kaikki taulut orpojen tietojen varalta ja näyttää täydellisen listan: taulut, rivit wp_options- ja wp_postmeta-tauluissa, cron-työt. Tämä on nopeampaa ja turvallisempaa kuin manuaalinen etsiminen phpMyAdminin kautta.

Pitäisikö minun poistaa teeman mukana tulleet lisäosat?

Kyllä, jos et käytä niitä. Teemojen mukana tulevat lisäosat (WPBakery Page Builder, Slider Revolution, ACF Pro) toimitetaan usein rajoitetuilla lisensseillä, eikä niihin tule tietoturvapäivityksiä. Deaktivoitu, vanhentunut WPBakery, jossa on tunnettu haavoittuvuus, on suora tie tietomurtoon. Jos et käytä sitä, poista se.

Voinko palauttaa lisäosan täydellisen poiston jälkeen?

Vain varmuuskopiosta. Kun taulut ja wp_options-tiedot on siivottu, kaikki lisäosan asetukset menetetään pysyvästi. Juuri siksi yllä oleva toimintamalli etenee yksinkertaisesta radikaaliin: ensin tavallinen poisto (palautettavissa), sitten tiedostojen siivous ja vasta lopuksi tietokanta. Etene vaiheittain; älä hyppää suoraan phpMyAdminiin.

Jääkö lisäosan dataa WordPress Multisite -asennuksessa?

Multisitessa jokaisella alisivustolla on omat taulunsa: wp_2_options, wp_2_postmeta ja niin edelleen. Kun olet poistanut lisäosan superadminin kautta, tarkista jokaisen alisivuston taulut (wp_*_options ja wp_*_postmeta kaikille blogi-ID:ille). Lisäosa on saatettu aktivoida verkon yksittäisillä sivustoilla ja se on jättänyt tietueita niiden tauluihin.

Yhteenveto: milloin täydellinen siivous on perusteltua

Jos sinulla on pieni sivusto ja poistat lisäosan kerran puolessa vuodessa, tavallinen poisto hallintapaneelin kautta ja kertaluonteinen wp_options-siivous riittää.

Mutta jos sivustosi on useita vuosia vanha, sen läpi on kulkenut kymmeniä lisäosia ja varmuuskopiot ovat kasvaneet gigatavun kokoisiksi, kirurginen siivous yllä olevien ohjeiden mukaan pienentää tietokantaa huomattavasti ja nopeuttaa hallintapaneelia. Käytännössä olemme siivonneet tuhansia orpoja tietueita wp_postmeta-taulusta ja kymmeniä tarpeettomia tauluja, ja hallintapaneelin vasteaika lyheni lähes puoleen.

Ota tavaksi: kun poistat lisäosan, käy läpi tarkistuslista (FTP → wp_options → cron → taulut). Kymmenen minuuttia tänään säästää tunteja huomenna, kun paisunut tietokanta kaataa sivustosi liikennepiikin aikana.

Mikä lisäosa jätti eniten roskaa poiston jälkeen sinun sivustollasi? Kerro kommenteissa.