Skip to content

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

🧹 Kuinka poistaa WordPress-käyttäjiä massana tietyllä roolilla

🧹 Kuinka poistaa WordPress-käyttäjiä massana tietyllä roolilla

Kaksitoistasataa roskapostirekisteröitymistä mainoskampanjan jälkeen. Kolmesataa testitiliä, joita kukaan ei poistanut julkaisun jälkeen. Sata avustajaa, jotka lähtivät puoli vuotta sitten. Kaikki tämä makaa sivuston tietokannassa kuolleena painolastina, joka kasvaa joka kuukausi.

Tämän painolastin poistaminen yksi kerrallaan on robotin, ei ihmisen, työtä. Tavallinen WordPress-taulukko näyttää 20 käyttäjää sivua kohden. Tuhat tiliä tarkoittaa 50 "Poista"-klikkausta ja 50 vahvistusta. Toisen tusinan kohdalla haluat jo sulkea selaimen ja teeskennellä, ettei ongelmaa olekaan.

Mutta voit ratkaista ongelman viidessä minuutissa. WordPress tarjoaa neljä työkalua käyttäjien massapuhdistukseen roolin perusteella: sisäänrakennetusta suodattimesta, joka ei vaadi lainkaan lisäosia, aina suoraan SQL:ään phpMyAdminissa. Käymme läpi jokaisen ohjeineen, kuvakaappauksineen ja mikä tärkeintä, miten vältät lukitsemasta itseäsi ulos sivustolta.

💡 Pikakatsaus:

  • Ota täysi varmuuskopio tietokannasta ja tiedostoista; tämä ei ole neuvo, vaan vakuutus katastrofin varalta
  • Suodata käyttäjät roolin mukaan sisäänrakennetuilla massatoiminnoilla; tämä toimii sadalle tai parillesadalle tilille
  • Asenna Bulk Delete, jos tarvitset tarkempia suodattimia: rekisteröitymispäivän, passiivisuuden tai julkaisujen puuttumisen perusteella
  • WP-CLI:n avulla tehtävä ratkeaa yhdellä komennolla, millä tahansa volyymilla, myös kymmenille tuhansille
  • Suora SQL antaa ehdottoman hallinnan, mutta vaatii varovaisuutta: yksi kirjoitusvirhe WHERE-ehdossa voi maksaa järjestelmänvalvojan oikeudet

Mitä tehdä ennen poistamista

Kolme toimenpidettä, jotka säästävät sinut peruuttamattomilta seurauksilta. Ohita yksikin niistä, ja vaarannat paitsi sisällön myös sivuston toiminnallisuuden.

Täysi varmuuskopio. Tietokannan ja tiedostojen varmuuskopio on ainoa tapa perua massapoisto. UpdraftPlus toimii hyvin (se lähettää varmuuskopiot Google Driveen, Dropboxiin tai S3:een), kuten myös WPvivid. Jos hosting-palvelussa on cPanel, käytä sisäänrakennettua Backup Wizardia; se on nopeampi eikä kuormita PHP-työntekijöitä.

Vie käyttäjälista. Jos poistettavien tilien tietoja saatetaan tarvita tarkastusta tai raportointia varten, vie ne ensin. Polku: "Käyttäjät" → "Kaikki käyttäjät" → "Vie"-painike ylhäällä → CSV-muoto. Tallenna tiedosto paikallisesti. Tiliä ei voi palauttaa tietokannasta DELETE-komennon jälkeen, ainoastaan varmuuskopiosta.

Sisällön tarkistus. Suodata käyttäjät roolin mukaan ja katso "Julkaisut"-sarakkeesta, kuinka monta artikkelia ja sivua jää ilman kirjoittajaa. Päätä etukäteen: siirrätkö sisällön järjestelmänvalvojalle poistaessasi käyttäjiä vai tuhoatko sen tilien mukana? Poistettujen käyttäjien kommentit jäävät sivustolle (kirjoittajaksi näkyy "Poistettu käyttäjä"); tämä ei vaikuta niihin.

Tapa 1: sisäänrakennetut massatoiminnot

Ei tarvita lisäosia. Kaikki tarvittava on jo WordPressin ytimessä. Tämä toimii jopa parinsadan tilin volyymeille kerralla; sitä suuremmilla määrillä alkaa esiintyä hidastelua ja aikakatkaisuja.

Vaihe 1: suodata roolin mukaan. Mene kohtaan "Käyttäjät" → "Kaikki käyttäjät". Taulukon yläpuolella on pudotusvalikko rooleille. Valitse tarvitsemasi (esimerkiksi "Tilaaja") ja napsauta "Suodata". WordPress näyttää vain kyseisen roolin käyttäjät.

WordPress-käyttäjien suodatus roolin mukaan hallintapaneelissa

Vaihe 2: kohteita sivulla. Oletuksena näet 20 merkintää. Massatyöhön se ei riitä. "Näyttöasetukset"-painike (oikeassa yläkulmassa) avaa paneelin, jossa voit asettaa "Kohteiden määrä sivulla" -kentän arvoon 200, 500 tai jopa 999. Napsauta "Käytä", sivu latautuu uudelleen ja näyttää koko listan yhdellä kertaa.

Sivulla näytettävien kohteiden määrän asettaminen WordPressin hallintapaneelissa

Vaihe 3: massavalinta. Taulukon otsikkorivin valintaruutu (Käyttäjänimi-otsikon vieressä) valitsee kaikki sivulla olevat kerralla. Poista sen jälkeen manuaalisesti valinnat niiltä, jotka haluat säilyttää: järjestelmänvalvojat, toimittajat, keskeiset kirjoittajat.

Kaikkien sivun käyttäjien massavalinta poistettavaksi

Vaihe 4: poisto ja sisällön uudelleenkohdistus. Valitse taulukon yläpuolella olevasta "Massatoiminnot"-pudotusvalikosta "Poista" ja napsauta "Käytä". WordPress kysyy, mitä tehdä poistettavien käyttäjien sisällölle: "Kohdista kaikki sisältö" -vaihtoehto ja järjestelmänvalvojan valitseminen viereisestä kentästä säilyttää julkaisut; "Poista kaikki sisältö" tuhoaa kaiken ilman palautusmahdollisuutta. Vahvista, ja homma on valmis.

Sisällön kohdistusikkuna käyttäjien massapoiston aikana

Sisäänrakennettu menetelmä on luotettava pienille ja keskisuurille määrille. Mutta kun käsittelet tuhansia, jokainen sivu tuottaa kymmeniä SQL-kyselyitä PHP:n kautta, ja palvelin joko kaatuu max_execution_time-virheeseen tai hyytyy täysin. Näitä tapauksia varten käytä alla olevia työkaluja.

Tapa 2: Bulk Delete -lisäosa

Bulk Delete on ilmainen lisäosa, jolla on yli 300 000 aktiivista asennusta. Sen tärkein etu tavalliseen tapaan verrattuna on eräkäsittely. Lisäosa poistaa käyttäjiä 50-100 kappaleen erissä kuormittamatta tietokantaa piikittäin. Lisäksi se tarjoaa suodattimia, joita WordPressin ytimessä ei ole.

Asennus on tavanomainen: "Lisäosat" → "Lisää uusi" → hae "Bulk Delete" → "Asenna" → "Ota käyttöön". Aktivoinnin jälkeen sivupalkin valikkoon ilmestyy "Bulk WP" -osio ja sen sisälle "Bulk Delete Users".

Täällä valitset poistettavan roolin ja määrität yhden tai useamman lisäsuodattimen:

  • rekisteröitymispäivä: ennen tai jälkeen tietyn päivämäärän;
  • passiivisuus: käyttäjät, jotka eivät ole kirjautuneet viimeiseen N päivään;
  • ei julkaisuja: tilit, joilla ei ole yhtään julkaisua;
  • metakentän arvo: esimerkiksi poista kaikki, joilla billing_country = 'RU'.
Bulk Delete -lisäosan massakäyttäjäpoistosivu

Ennen poiston suorittamista muista klikata "Preview Users"; lisäosa näyttää listan suodattimiin täsmäävistä tunnuksista ja sähköposteista. Varmista, että olet poistamassa juuri ne käyttäjät, jotka haluat poistaa. Tämän jälkeen rastita vahvistusvalintaruutu ja klikkaa "Bulk Delete".

Huomionarvoisia vaihtoehtoja ovat WP Bulk Delete, joka osaa poistaa käyttäjien lisäksi myös julkaisuja, sivuja, kommentteja ja taksonomioita (yleispuhdistaja, joskin osa ominaisuuksista on Pro-versiossa), sekä User Role Editor, joka on ensisijaisesti työkalu roolien muokkaamiseen ja omien roolien luomiseen, mutta sen käyttöliittymässä on myös joukkopoisto roolin mukaan ("Users"-välilehti).

Tapa 3: WP-CLI

WP-CLI hoitaa tehtävän yhdellä konsolikomennolla. Ei sivutusta, ei aikakatkaisuja. Tarvitset komentoriviyhteyden palvelimelle (SSH VPS:llä, dedikoidussa hostingissa tai paikallisessa kehitysympäristössä). Halvoissa jaetuissa hosting-palveluissa WP-CLI ei yleensä ole käytettävissä.

Hae ensin kaikkien halutun roolin käyttäjien tunnukset:

1wp user list --role=subscriber --format=ids

Tulosteena on välilyönnein eroteltu tunnusjono: 12 45 78 134 256. Poista ne ja siirrä sisältö ylläpitäjälle (ID=1):

1wp user delete 12 45 78 134 256 --reassign=1

Voit tehdä sen yhdellä komennolla ilman välilistaa:

1wp user delete $(wp user list --role=subscriber --format=ids) --reassign=1

--delete-posts-lippu --reassign-lipun sijaan tuhoaa kokonaan sekä käyttäjät että heidän sisältönsä. Käytä sitä vain, jos olet varma, ettei poistettavien tilien sisältöä tarvita.

WP-CLI toimii suoraan tietokannan kanssa PHP:n ohi. Sadalle tuhannelle käyttäjälle komento suoritetaan 2-5 sekunnissa. Tämä on kertaluokkia nopeampaa kuin mikään lisäosa ja turvallisempaa kuin manuaalinen SQL, koska wp user delete siivoaa metatiedot ketjuttaen jättämättä orporivejä.

Tapa 4: suora SQL

Niille, jotka tarvitsevat täyden hallinnan jokaiseen kyselyyn. SQL phpMyAdminin tai MySQL-konsolin kautta ei aseta rajoituksia, mutta ei myöskään anna virheitä anteeksi.

Tee ensin tietokannasta varmuuskopio. Tämä ei ole suositus, vaan ehdoton vaatimus. Yksi kirjoitusvirhe WHERE-lauseessa (esimerkiksi administrator sanan subscriber sijaan) ja menetät pääsyn sivustolle. Palautus onnistuu vain varmuuskopiosta.

Kirjaudu phpMyAdminiin hosting-paneelisi kautta, valitse WordPress-tietokanta ja avaa "SQL"-välilehti.

Vaihe 1: etsi ID:t. Roolit on tallennettu wp_usermeta-tauluun, kenttään meta_key = 'wp_capabilities'. Korvaa subscriber halutulla roolilla ja säädä wp_-etuliite, jos se poikkeaa:

1SELECT u.ID, u.user_login, u.user_email
2FROM wp_users u
3JOIN wp_usermeta um ON u.ID = um.user_id
4WHERE um.meta_key = 'wp_capabilities'
5AND um.meta_value LIKE '%subscriber%';

Tarkista tuloste silmämääräisesti. Kopioi saadut ID:t.

Vaihe 2: siirrä sisältö. Korvaa 1 sen käyttäjän ID:llä, jolle siirrät artikkelit. Listan 123, 456, 789 tulee olla vaiheen 1 ID:t:

1UPDATE wp_posts
2SET post_author = 1
3WHERE post_author IN (123, 456, 789);

Vaihe 3: poista käyttäjät ja metatiedot. Juuri tässä järjestyksessä:

1DELETE FROM wp_users WHERE ID IN (123, 456, 789);
2DELETE FROM wp_usermeta WHERE user_id IN (123, 456, 789);

Jos sinun täytyy poistaa myös artikkelit ja kommentit, tyhjennä ensin lapsitaulut:

1DELETE FROM wp_comments WHERE user_id IN (123, 456, 789);
2DELETE FROM wp_posts WHERE post_author IN (123, 456, 789);

Ja vasta sitten wp_users ja wp_usermeta. Järjestys on kriittinen: ensin lapsitietueet, sitten vanhemmat, muuten saat viiteavainrikkomuksia.

SQL-ajon jälkeen varmista, että poistetut käyttäjät ovat todella kadonneet hallintapaneelista ja että artikkelit (jos siirsit ne) näkyvät uuden kirjoittajan alla.

⁉️🤔 Usein kysytyt kysymykset

Voiko poistetun käyttäjän palauttaa?

Ei. WordPress ei säilytä poistettuja tilejä roskakorissa, toisin kuin artikkeleita ja sivuja. Ainoa tapa tuoda ne takaisin on palauttaa tietokannan varmuuskopiosta. Juuri siksi täysi varmuuskopio ennen mitään massapoistoa on ehdoton: se on ainoa vakuutuksesi.

Mitä tapahtuu poistetun käyttäjän sisällölle?

Se riippuu poiston yhteydessä tehdystä valinnasta. "Kohdista kaikki sisältö" -vaihtoehto ja järjestelmänvalvoja tarkoittavat, että artikkelit ja sivut säilyvät, vain kirjoittaja vaihtuu. "Poista kaikki sisältö" -vaihtoehto poistaa artikkelit, sivut ja mediatiedostot ilman mahdollisuutta palautukseen. Poistettujen käyttäjien kommentit jäävät sivustolle, ja kirjoittajaksi näkyy "Poistettu käyttäjä"; niiden poistaminen on erillinen toimenpide.

Mikä on nopein tapa yli 10 000 käyttäjälle?

WP-CLI. Yksi komento wp user delete $(wp user list --role=subscriber --format=ids) --reassign=1 suoritetaan 2-5 sekunnissa jopa sadalle tuhannelle tilille. SQL phpMyAdminin kautta on myös nopea, mutta vaatii ID:iden manuaalista kopiointia kyselyiden välillä. Lisäosat ja sisäänrakennettu tapa ovat hyödyttömiä tällaisille määrille: ne puskevat dataa PHP:n läpi ja törmäävät max_execution_time-rajoihin.

Täytyykö wp_usermeta poistaa käyttäjien mukana?

Kyllä. Jos poistat vain wp_users-taulun, wp_usermeta-tauluun jää orporivejä, joissa on olemattomien tilien metatietoja. Ne eivät riko sivustoa, mutta ne paisuttavat tietokantaa. Bulk Delete -lisäosa ja WP-CLI (wp user delete) siivoavat metatiedot automaattisesti. Manuaalisessa SQL:ssä muista lisätä toinen kysely: DELETE FROM wp_usermeta.

Voinko poistaa vain käyttäjät, joilla ei ole artikkeleita?

Kyllä. Bulk Delete -lisäosassa on valmis "Käyttäjät ilman artikkeleita" -suodatin. WP-CLI:ssä ketjuta kaksi komentoa: hae ensin roolin käyttäjien ID:t ja tarkista sitten jokaiselta artikkelit komennolla wp post list. SQL:ssä lisää ehto AND u.ID NOT IN (SELECT DISTINCT post_author FROM wp_posts).

Nyt turvallisuudesta käytännössä. Vaarallisin skenaario on poisto SQL:llä ilman esikatselua. Kokeneetkin ylläpitäjät tekevät virheitä WHERE-lauseessa. Varmuuskopio ennen SQL:ää on sääntö, joka maksaa itsensä takaisin kerran sadasta. Mutta se yksi kerta on se, jolloin se pelastaa sivuston.

Mitä valita omaan tehtävääsi

Neljä tapaa kattaa minkä tahansa skenaarion, parista kymmenestä roskapostirekisteröitymisestä sataan tuhanteen kuolleeseen tiliin. Tässä nopea matriisi:

  • Alle 200 käyttäjää, et halua asentaa lisäosia → sisäänrakennetut massatoiminnot. Kolme klikkausta, ja ongelma on ratkaistu.
  • Jopa 5 000, tarvitset suodatuksen päivämäärän tai passiivisuuden mukaan → Bulk Delete -lisäosa. Turvallisin vaihtoehto niille, jotka eivät työskentele konsolilla.
  • Mikä tahansa määrä, SSH-yhteys käytössä → WP-CLI. Yksi komento, 2-5 sekuntia, valmista.
  • Oma palvelin, tarvitset hallinnan jokaiseen DELETE-kyselyyn → suora SQL. Mutta vain, jos tiedät tarkalleen mitä teet ja olet tehnyt varmuuskopion.

Pääsääntö ei riipu menetelmästä: varmuuskopioi, varmuuskopioi ja varmuuskopioi uudelleen. WordPressin tietokanta ei anna anteeksi vahinkopoistoja, eikä hosting säilytä kopioita ikuisesti. Tee varmuuskopio nyt ja avaa käyttäjälista vasta sitten.