Skip to content

Kõik WordPressist, veebiarendusest — ja mitte ainult

🧹 Kuidas kustutada WordPressi kasutajaid hulgi kindla rolliga

🧹 Kuidas kustutada WordPressi kasutajaid hulgi kindla rolliga

Kaksteistsada rämpsregistreeringut pärast reklaamikampaaniat. Kolmsada testkontot, mida keegi pärast käivitamist ei kustutanud. Sada kaasautorit, kes lahkusid kuus kuud tagasi. Kõik see istub saidi andmebaasis surnud raskusena, kasvades iga kuuga.

Selle ballasti ükshaaval kustutamine on töö robotile, mitte inimesele. Tavaline WordPressi tabel näitab 20 kasutajat lehekülje kohta. Tuhande konto puhul tähendab see 50 „Kustuta" klõpsu ja 50 kinnitust. Teise tosina juures tahad brauseri sulgeda ja teeselda, et probleemi pole olemas.

Kuid sa saad probleemi lahendada viie minutiga. WordPress pakub nelja tööriista kasutajate rollipõhiseks masspuhastuseks: alates sisseehitatud filtrist, mis ei vaja ühtegi pluginat, kuni otsese SQL-i päringuni phpMyAdminis. Käsitleme igaühte koos juhiste, ekraanipiltide ja, mis kõige tähtsam, sellega, kuidas vältida enda saidilt välja lukustamist.

💡 Kiirülevaade:

  • Tee andmebaasist ja failidest täielik varukoopia; see pole nõuanne, vaid kindlustus katastroofi vastu
  • Filtreeri kasutajaid rolli järgi, kasutades sisseehitatud hulgitoiminguid; see toimib saja või paarisaja konto puhul
  • Paigalda Bulk Delete, kui vajad täpsemaid filtreid: registreerimiskuupäeva, mitteaktiivsuse või postituste puudumise järgi
  • WP-CLI abil lahendatakse ülesanne ühe käsuga, mis tahes mahu puhul, sealhulgas kümned tuhanded
  • Otsene SQL annab absoluutse kontrolli, kuid nõuab hoolt: üks kirjaviga WHERE-lauses võib maksta sulle administraatori ligipääsu

Mida teha enne kustutamist

Kolm toimingut, mis päästavad sind pöördumatute tagajärgede eest. Jäta mõni neist vahele ja riskid mitte ainult sisu, vaid ka saidi toimimisega.

Täielik varukoopia. Andmebaasi ja failide varukoopia on ainus viis masskustutamise tagasipööramiseks. UpdraftPlus töötab hästi (see saadab varukoopiad Google Drive'i, Dropboxi või sinu S3-le), nagu ka WPvivid. cPaneliga majutusel kasuta sisseehitatud varundusviisardit; see on kiirem ega koorma PHP töölisi.

Kasutajate nimekirja eksport. Kui kustutatavate kontode andmeid võidakse vajada auditeerimiseks või aruandluseks, ekspordi need kõigepealt. Teekond: „Kasutajad" → „Kõik kasutajad" → ülaosas nupp „Ekspordi" → CSV-vorming. Salvesta fail kohalikult. Kontot ei saa pärast andmebaasist KUSTUTAMIST taastada, ainult varukoopiast.

Sisu ülevaatus. Filtreeri kasutajaid rolli järgi ja vaata veergu „Postitused", et näha, mitu postitust ja lehte jääb autorita. Otsusta eelnevalt: kas kannad kustutamisel sisu administraatorile üle või kustutad selle koos kontodega? Kustutatud kasutajate kommentaarid jäävad saidile (autor kuvatakse kui „Kustutatud kasutaja"); see neid ei mõjuta.

1. Meetod: sisseehitatud hulgitoimingud

Pluginaid pole vaja. Kõik vajalik on juba WordPressi tuumas olemas. See toimib kuni paarisaja konto kaupa korraga; sellest suuremate mahtude puhul hakkad kokku puutuma aeglustumise ja ajalõppudega.

1. samm: filtreeri rolli järgi. Mine jaotisse „Kasutajad" → „Kõik kasutajad". Tabeli kohal on rollide rippmenüü. Vali vajalik (näiteks „Tellija") ja klõpsa „Filtreeri". WordPress näitab ainult selle rolliga kasutajaid.

WordPressi kasutajate filtreerimine rolli järgi administraatori paneelis

2. samm: kirjeid lehekülje kohta. Vaikimisi näed 20 kirjet. Hulgitööks sellest ei piisa. Nupp „Kuva seaded" (paremal üleval) avab paneeli, kus saad määrata välja „Kirjeid leheküljel" väärtuseks 200, 500 või isegi 999. Klõpsa „Rakenda", leht laaditakse uuesti ja näitab kogu nimekirja ühe partiina.

Üksuste arvu määramine lehe kohta WordPressi administraatori paneelis

3. samm: hulgivalik. Tabeli päises olev märkeruut (pealkirja „Kasutajanimi" kõrval) valib korraga kõik lehel olevad. Pärast seda eemalda käsitsi märge nendelt, keda soovid alles jätta: administraatorid, toimetajad, võtmeautorid.

Kõigi lehel olevate kasutajate hulgivalik kustutamiseks

4. samm: kustutamine ja sisu ümbermääramine. Tabeli kohal olevas rippmenüüs „Hulgitoimingud" vali „Kustuta" ja klõpsa „Rakenda". WordPress küsib, mida teha kustutatavate kasutajate sisuga: valik „Omista kogu sisu" koos administraatori valimisega kõrvaloleval väljal säilitab postitused; „Kustuta kogu sisu" kustutab kõik ilma taastamisvõimaluseta. Kinnita ja ongi tehtud.

Sisu omistamise dialoog kasutajate hulgikustutamise ajal

Sisseehitatud meetod on usaldusväärne väikeste ja keskmiste mahtude puhul. Kuid kui tegemist on tuhandetega, genereerib iga leht PHP kaudu kümneid SQL-päringuid ja server kas jookseb kokku max_execution_time veaga või jääb seisma. Sellistel juhtudel kasuta allpool olevaid tööriistu.

2. Meetod: Bulk Delete plugin

Bulk Delete on tasuta plugin, millel on üle 300 000 aktiivse paigalduse. Selle peamine eelis tavameetodi ees on pakktöötlus. Plugin kustutab kasutajaid 50-100 kaupa, tekitamata andmebaasile tippkoormust. Lisaks pakub see filtreid, mida WordPressi tuumikul pole.

Paigaldamine on tavapärane: „Plugins" → „Add New" → otsi „Bulk Delete" → „Install" → „Activate". Pärast aktiveerimist ilmub külgmenüüsse jaotis „Bulk WP" ja selle alla „Bulk Delete Users".

Siin valid kustutatava rolli ja seadistad ühe või mitu lisafiltrit:

  • registreerimise kuupäev: enne või pärast määratud kuupäeva;
  • passiivsus: kasutajad, kes pole viimase N päeva jooksul sisse loginud;
  • postitusi pole: kontod, millel pole ühtegi postitust;
  • metavälja väärtus: näiteks kustuta kõik, kellel on billing_country = 'RU'.
Bulk Delete plugina masskasutajate kustutamise leht

Enne kustutamise käivitamist klõpsa kindlasti nupul „Preview Users"; plugin kuvab filtritele vastavate ID-de ja e-posti aadresside loendi. Veendu, et kustutad täpselt need, keda vaja. Seejärel märgi kinnituskast ja klõpsa „Bulk Delete".

Märkimisväärsete alternatiivide hulka kuuluvad WP Bulk Delete, mis suudab kustutada mitte ainult kasutajaid, vaid ka postitusi, lehti, kommentaare ja taksonoomiaid (universaalne puhastaja, kuigi mõned funktsioonid on Pro-versioonis), ning User Role Editor, mis on eelkõige rollide muutmise ja kohandatud rollide loomise tööriist, kuid selle liideses on ka rollipõhine pakkkustutamine (vahekaart „Users").

Meetod 3: WP-CLI

WP-CLI lahendab ülesande ühe konsoolikäsuga. Ei mingit lehekülgede kaupa laadimist ega ajalõppe. Vajad serveri kestapääsu (SSH VPS-is, spetsiaalses hostimises või kohalikus arenduskeskkonnas). Odavatel jagatud hostimistel pole WP-CLI tavaliselt saadaval.

Esmalt hangi kõigi soovitud rolliga kasutajate ID-d:

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

Väljund on tühikutega eraldatud ID-de jada: 12 45 78 134 256. Kustuta need koos sisu ümbersuunamisega administraatorile (ID=1):

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

Saad seda teha ühe käsuga, ilma vahepealse loendita:

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

Lipp --delete-posts lipu --reassign asemel kustutab täielikult nii kasutajad kui ka nende sisu. Kasuta seda ainult siis, kui oled kindel, et kustutatud kontode sisu pole vaja.

WP-CLI töötab otse andmebaasiga, PHP-st mööda minnes. Saja tuhande kasutaja puhul täidetakse käsk 2-5 sekundiga. See on suurusjärkude võrra kiirem kui ükski plugin ja turvalisem kui käsitsi SQL, sest wp user delete kustutab metainfo jadamisi, jätmata maha orvaks jäänud ridu.

Meetod 4: otse SQL

Neile, kes vajavad absoluutset kontrolli iga päringu üle. SQL phpMyAdmini või MySQL konsooli kaudu ei sea mingeid piiranguid, kuid ei andesta ka vigu.

Esiteks varunda andmebaas. See ei ole soovitus, vaid range nõue. Üks trükiviga WHERE osas (näiteks administrator subscriber asemel) ja sa kaotad saidile ligipääsu. Taastamine on võimalik ainult tõmmisest.

Logi oma hostingu paneeli kaudu phpMyAdmini sisse, vali WordPressi andmebaas ja ava vahekaart „SQL".

1. samm: leia ID-d. Rollid on salvestatud tabelis wp_usermeta, väljal meta_key = 'wp_capabilities'. Asenda subscriber soovitud rolliga ja kohanda wp_ prefiksit, kui see erineb:

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%';

Vaata väljund visuaalselt üle. Kopeeri saadud ID-d.

2. samm: määra sisu ümber. Asenda 1 selle kasutaja ID-ga, kellele postitusi üle kannad. Loend 123, 456, 789 peaks olema 1. sammu ID-d:

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

3. samm: kustuta kasutajad ja metaandmed. Täpselt selles järjekorras:

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

Kui pead kustutama ka postitused ja kommentaarid, puhasta kõigepealt alam-tabelid:

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

Ja alles seejärel wp_users ja wp_usermeta. Järjekord on kriitiline: kõigepealt alamkirjed, seejärel ülemkirjed, vastasel juhul tekivad võõrvõtme rikkumised.

Pärast SQL-i käivitamist kontrolli kindlasti, et kustutatud kasutajad on administraatori paneelist tegelikult kadunud ja et postitused (kui sa need ümber määrasid) on uue autori all nähtavad.

⁉️🤔 Korduma kippuvad küsimused

Kas kustutatud kasutajat saab taastada?

Ei. WordPress ei hoia kustutatud kontosid prügikastis, erinevalt postitustest ja lehtedest. Ainus viis neid tagasi tuua on andmebaasi varukoopiast taastamine. Just seepärast on täielik varundus enne igasugust masskustutamist möödapääsmatu: see on sinu ainus kindlustus.

Mis juhtub kustutatud kasutaja sisuga?

See sõltub kustutamise ajal tehtud valikust. Valik „Omista kogu sisu kasutajale" koos administraatoriga tähendab, et postitused ja lehed säilitatakse, muutub ainult autor. Valik „Kustuta kogu sisu" kustutab postitused, lehed ja meediafailid ilma võimaluseta neid taastada. Kustutatud kasutajate kommentaarid jäävad saidile, autor kuvatakse kui „Kustutatud kasutaja"; nende kustutamine on eraldi toiming.

Mis on kiireim meetod 10 000+ kasutaja jaoks?

WP-CLI. Üks käsk wp user delete $(wp user list --role=subscriber --format=ids) --reassign=1 käivitub 2-5 sekundiga isegi saja tuhande konto puhul. SQL läbi phpMyAdmini on samuti kiire, kuid nõuab ID-de käsitsi kopeerimist päringute vahel. Pistmoodulid ja sisseehitatud meetod on selliste mahtude jaoks kasutud: need suruvad andmed läbi PHP ja põrkavad max_execution_time limiidi vastu.

Kas ma pean koos kasutajatega kustutama ka wp_usermeta?

Jah. Kui kustutad ainult wp_users, jäävad wp_usermeta tabelisse orbread mitteeksisteerivate kontode metaandmetega. Need ei lõhu saiti, kuid paisutavad andmebaasi. Bulk Delete pistmoodul ja WP-CLI (wp user delete) puhastavad metaandmed automaatselt. Käsitsi SQL-i puhul lisa kindlasti teine päring: DELETE FROM wp_usermeta.

Kas ma saan kustutada ainult kasutajad, kellel pole postitusi?

Jah. Bulk Delete pistmoodulil on valmis filter „Kasutajad ilma postitusteta". WP-CLI-s ahelda kaks käsku: esmalt hangi rolliga kasutajate ID-d, seejärel kontrolli igaühe puhul postituste olemasolu käsuga wp post list. SQL-is lisa tingimus AND u.ID NOT IN (SELECT DISTINCT post_author FROM wp_posts).

Nüüd turvalisusest praktikas. Kõige ohtlikum stsenaarium on kustutamine SQL-i kaudu ilma eelvaateta. Isegi kogenud administraatorid teevad WHERE osas vigu. Varundus enne SQL-i on reegel, mis tasub end ära ühel korral sajast. Kuid see üks kord on see, kui see päästab saidi.

Mida oma ülesande jaoks valida

Neli meetodit katavad iga stsenaariumi, alates paarikümnest rämpsposti registreerimisest kuni saja tuhande surnud kontoni. Siin on kiire maatriks:

  • Vähem kui 200 kasutajat, ei taha pistmooduleid paigaldada → sisseehitatud hulgitoimingud. Kolm klõpsu ja probleem on lahendatud.
  • Kuni 5000, vaja filtreid kuupäeva või mitteaktiivsuse järgi → Bulk Delete pistmoodul. Kõige turvalisem valik neile, kes konsooliga ei tööta.
  • Igasugune maht, on SSH ligipääs → WP-CLI. Üks käsk, 2-5 sekundit, valmis.
  • Oma server, vaja kontrolli iga DELETE üle → otse SQL. Kuid ainult siis, kui tead täpselt, mida teed, ja oled varukoopia teinud.

Peamine reegel ei sõltu meetodist: varunda, varunda ja veel kord varunda. WordPressi andmebaas ei andesta juhuslikke kustutamisi ja hosting ei hoia koopiaid igavesti. Tee varukoopia kohe ja alles seejärel ava kasutajate nimekiri.