Skip to content

Alt om WordPress, webutvikling — og mer til

🧹 Hvordan masseslette WordPress-brukere med en bestemt rolle

🧹 Hvordan masseslette WordPress-brukere med en bestemt rolle

Tolv hundre spam-registreringer etter en annonsekampanje. Tre hundre testkontoer som ingen slettet etter lansering. Hundre bidragsytere som sluttet for seks måneder siden. Alt dette ligger i nettstedets database som dødvekt, og vokser hver måned.

Å slette denne ballasten én etter én er en jobb for en robot, ikke et menneske. Standard WordPress-tabellen viser 20 brukere per side. Med tusen kontoer betyr det 50 «Slett»-klikk og 50 bekreftelser. Etter andre dusinet har du lyst til å lukke nettleseren og late som om problemet ikke finnes.

Men du kan løse problemet på fem minutter. WordPress tilbyr fire verktøy for masseopprydding av brukere etter rolle: fra det innebygde filteret som ikke krever noen utvidelser i det hele tatt, til direkte SQL i phpMyAdmin. Vi går gjennom hver av dem med instruksjoner, skjermbilder og, viktigst av alt, hvordan du unngår å låse deg selv ute av nettstedet.

💡 Hurtigoversikt:

  • Ta en full sikkerhetskopi av databasen og filene; dette er ikke et råd, det er en forsikring mot katastrofe
  • Filtrer brukere etter rolle ved hjelp av de innebygde massehandlingene; dette fungerer for hundre eller to hundre kontoer
  • Installer Bulk Delete hvis du trenger finmaskede filtre: etter registreringsdato, inaktivitet eller fravær av innlegg
  • Med WP-CLI løses oppgaven med én enkelt kommando, uansett volum, inkludert titusenvis
  • Direkte SQL gir absolutt kontroll, men krever forsiktighet: én skrivefeil i WHERE kan koste deg administratortilgang

Hva du bør gjøre før du sletter

Tre handlinger som redder deg fra irreversible konsekvenser. Hopp over én av dem, og du risikerer ikke bare innhold, men nettstedets funksjonalitet.

Full sikkerhetskopi. En sikkerhetskopi av databasen og filene er den eneste måten å rulle tilbake en massesletting på. UpdraftPlus fungerer godt (det sender sikkerhetskopier til Google Drive, Dropbox eller din S3), det samme gjør WPvivid. På hosting med cPanel, bruk den innebygde Backup Wizard; den er raskere og belaster ikke PHP-arbeidere.

Eksporter brukerlisten. Hvis data fra kontoene som slettes kan bli nødvendig for revisjon eller rapportering, eksporter dem først. Sti: «Brukere» → «Alle brukere» → «Eksporter»-knappen øverst → CSV-format. Lagre filen lokalt. Du kan ikke gjenopprette en konto etter DELETE fra databasen, bare fra en sikkerhetskopi.

Innholdsgjennomgang. Filtrer brukere etter rolle og se på «Innlegg»-kolonnen for å se hvor mange innlegg og sider som vil stå uten forfatter. Bestem deg på forhånd: vil du overføre innhold til en administrator når du sletter, eller fjerne det sammen med kontoene? Kommentarer fra slettede brukere forblir på nettstedet (forfatteren vises som «Slettet bruker»); dette påvirker dem ikke.

Metode 1: innebygde massehandlinger

Ingen utvidelser nødvendig. Alt du trenger er allerede i WordPress-kjernen. Dette fungerer for volumer opp til et par hundre kontoer i én omgang; utover det begynner du å møte treghet og tidsavbrudd.

Trinn 1: filtrer etter rolle. Gå til «Brukere» → «Alle brukere». Over tabellen er det en rullegardinliste med roller. Velg den du trenger (for eksempel «Abonnent») og klikk «Filtrer». WordPress vil bare vise brukere med den rollen.

Filtrering av WordPress-brukere etter rolle i administrasjonspanelet

Trinn 2: oppføringer per side. Som standard ser du 20 oppføringer. For massearbeid er ikke det nok. Knappen «Skjerminnstillinger» (øverst til høyre) åpner et panel der du kan sette feltet «Antall oppføringer per side» til 200, 500 eller til og med 999. Klikk «Bruk», siden lastes på nytt og viser hele listen i én bolk.

Angi antall elementer per side i WordPress-administrasjonspanelet

Trinn 3: massevalg. Avkrysningsboksen i tabelloverskriften (ved siden av «Brukernavn»-overskriften) velger alle på siden samtidig. Etter det fjerner du manuelt avkrysningen for dem du vil beholde: administratorer, redaktører, nøkkelforfattere.

Massevalg av alle brukere på siden for sletting

Trinn 4: sletting og omfordeling av innhold. I rullegardinmenyen «Massehandlinger» over tabellen velger du «Slett» og klikker «Bruk». WordPress vil spørre hva som skal gjøres med innholdet til brukere som slettes: alternativet «Tilskriv alt innhold til» pluss å velge en administrator i det tilstøtende feltet bevarer innlegg; «Slett alt innhold» sletter alt uten mulighet for gjenoppretting. Bekreft, så er du ferdig.

Dialog for innholdstilskrivning under massesletting av brukere

Den innebygde metoden er pålitelig for små og mellomstore volumer. Men når du har å gjøre med tusenvis, genererer hver side dusinvis av SQL-spørringer gjennom PHP, og serveren krasjer enten på max_execution_time eller stopper helt opp. For slike tilfeller, bruk verktøyene nedenfor.

Metode 2: Bulk Delete-utvidelsen

Bulk Delete er en gratis plugin med over 300 000 aktive installasjoner. Den største fordelen sammenlignet med standardmetoden er batchprosessering. Pluginen sletter brukere i puljer på 50-100, uten å skape toppbelastning på databasen. Og den tilbyr filtre som ikke finnes i WordPress-kjernen.

Installasjonen er standard: «Plugins» → «Legg til ny» → søk etter «Bulk Delete» → «Installer» → «Aktiver». Etter aktivering dukker det opp en «Bulk WP»-seksjon i sidemenyen, og inne i den, «Bulk Delete Users».

Her velger du rollen for sletting og konfigurerer ett eller flere tilleggsfiltre:

  • registreringsdato: før eller etter en angitt dato;
  • inaktivitet: brukere som ikke har logget inn de siste N dagene;
  • ingen innlegg: kontoer uten et eneste innlegg;
  • metafeltverdi: for eksempel, slett alle med billing_country = 'RU'.
Bulk Delete-utvidelsens side for massesletting av brukere

Før du kjører slettingen, husk å klikke «Preview Users»; pluginen vil vise en liste over ID-er og e-poster som samsvarer med filtrene. Bekreft at du sletter nøyaktig dem du trenger å slette. Kryss deretter av i bekreftelsesboksen og klikk «Bulk Delete».

Verdige alternativer inkluderer WP Bulk Delete, som ikke bare kan slette brukere, men også innlegg, sider, kommentarer og taksonomier (en universell opprydder, selv om enkelte funksjoner er i Pro), og User Role Editor, som primært er et verktøy for å redigere roller og opprette egendefinerte, men grensesnittet har også massesletting etter rolle (fanen «Users»).

Metode 3: WP-CLI

WP-CLI løser oppgaven med en enkelt konsollkommando. Ingen paginering, ingen tidsavbrudd. Du trenger skalltilgang til serveren (SSH på en VPS, dedikert hosting eller lokalt utviklingsmiljø). På billig delt hosting er WP-CLI vanligvis utilgjengelig.

Først, hent ID-ene til alle brukere med ønsket rolle:

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

Resultatet er en streng med mellomromseparerte ID-er: 12 45 78 134 256. Slett dem med omfordeling av innhold til administratoren (ID=1):

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

Du kan gjøre det i én kommando, uten den mellomliggende listen:

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

Flagget --delete-posts i stedet for --reassign sletter både brukere og innholdet deres fullstendig. Bruk det bare hvis du er sikker på at innholdet fra de slettede kontoene ikke trengs.

WP-CLI jobber direkte mot databasen, utenom PHP. For hundre tusen brukere utføres kommandoen på 2-5 sekunder. Dette er størrelsesordener raskere enn noen plugin, og tryggere enn manuell SQL, fordi wp user delete kaskaderer gjennom metadataopprydding uten å etterlate foreldreløse rader.

Metode 4: direkte SQL

For deg som trenger absolutt kontroll over hvert eneste spørring. SQL via phpMyAdmin eller MySQL-konsollen legger ingen begrensninger, men tilgir heller ingen feil.

Først, ta sikkerhetskopi av databasen. Dette er ikke en anbefaling; det er et strengt krav. En eneste skrivefeil i WHERE (for eksempel administrator i stedet for subscriber) og du mister tilgang til nettstedet. Gjenoppretting er kun mulig fra en dump.

Logg inn på phpMyAdmin via vertskontrollpanelet, velg WordPress-databasen og åpne «SQL»-fanen.

Steg 1: finn ID-ene. Roller er lagret i tabellen wp_usermeta, feltet meta_key = 'wp_capabilities'. Bytt ut subscriber med ønsket rolle og juster wp_-prefikset hvis det er annerledes:

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

Gå gjennom resultatet visuelt. Kopier de resulterende ID-ene.

Steg 2: omfordel innhold. Bytt ut 1 med ID-en til brukeren du overfører innlegg til. Listen 123, 456, 789 skal være ID-ene fra steg 1:

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

Steg 3: slett brukere og metadata. I nøyaktig denne rekkefølgen:

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

Hvis du også trenger å slette innlegg og kommentarer, rens opp i barnetabellene først:

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

Og først deretter, wp_users og wp_usermeta. Rekkefølgen er kritisk: barneposter først, deretter foreldreposter, ellers får du brudd på fremmednøkler.

Etter å ha kjørt SQL, sørg for å verifisere at de slettede brukerne faktisk har forsvunnet fra adminpanelet og at innlegg (hvis du omfordelte dem) er synlige under den nye forfatteren.

⁉️🤔 Ofte stilte spørsmål

Kan en slettet bruker gjenopprettes?

Nei. WordPress lagrer ikke slettede kontoer i en papirkurv, i motsetning til innlegg og sider. Den eneste måten å få dem tilbake på er å gjenopprette fra en databasesikkerhetskopi. Det er nettopp derfor en full sikkerhetskopi før enhver massesletting er ufravikelig: det er din eneste forsikring.

Hva skjer med innholdet til en slettet bruker?

Det avhenger av valget som tas under slettingen. Alternativet «Attribuer alt innhold til» pluss en administrator betyr at innlegg og sider bevares, bare med en endret forfatter. Alternativet «Slett alt innhold» sletter innlegg, sider og mediefiler uten mulighet til å gjenopprette dem. Kommentarer fra slettede brukere forblir på nettstedet, med forfatteren vist som «Slettet bruker»; å slette dem er en separat operasjon.

Hva er den raskeste metoden for 10 000+ brukere?

WP-CLI. En enkelt kommando wp user delete $(wp user list --role=subscriber --format=ids) --reassign=1 kjøres på 2-5 sekunder selv for hundre tusen kontoer. SQL via phpMyAdmin er også raskt, men krever manuell kopiering av ID-er mellom spørringer. Utvidelser og den innebygde metoden er ubrukelige for slike volumer: de skyver data gjennom PHP og treffer max_execution_time-grenser.

Må jeg slette wp_usermeta sammen med brukere?

Ja. Hvis du bare sletter wp_users, vil foreldreløse rader med metadata for ikke-eksisterende kontoer forbli i wp_usermeta. De vil ikke ødelegge nettstedet, men de blåser opp databasen. Bulk Delete-utvidelsen og WP-CLI (wp user delete) rydder opp i metadata automatisk. Med manuell SQL, sørg for å legge til en ny spørring: DELETE FROM wp_usermeta.

Kan jeg slette bare brukere uten innlegg?

Ja. Bulk Delete-utvidelsen har et ferdig filter for «Brukere uten innlegg». I WP-CLI, lenk to kommandoer: først hent ID-ene til brukere med rollen, og sjekk deretter hver enkelt for innlegg ved hjelp av wp post list. I SQL, legg til betingelsen AND u.ID NOT IN (SELECT DISTINCT post_author FROM wp_posts).

Nå om sikkerhet i praksis. Det farligste scenarioet er sletting via SQL uten forhåndsvisning. Selv erfarne administratorer gjør feil i WHERE. En sikkerhetskopi før SQL er en regel som lønner seg én av hundre ganger. Men den ene gangen er når den redder nettstedet.

Hva du bør velge for din oppgave

Fire metoder dekker ethvert scenario, fra et par dusin spam-registreringer til hundre tusen døde kontoer. Her er en rask matrise:

  • Færre enn 200 brukere, ønsker ikke å installere utvidelser → innebygde massehandlinger. Tre klikk, og problemet er løst.
  • Opptil 5 000, trenger filtre etter dato eller inaktivitet → Bulk Delete-utvidelsen. Det tryggeste alternativet for dem som ikke jobber med konsollen.
  • Ethvert volum, har SSH-tilgang → WP-CLI. Én kommando, 2-5 sekunder, ferdig.
  • Egen server, trenger kontroll over hver DELETE → direkte SQL. Men bare hvis du vet nøyaktig hva du gjør og har tatt en sikkerhetskopi.

Hovedregelen avhenger ikke av metoden: sikkerhetskopier, sikkerhetskopier og sikkerhetskopier igjen. WordPress-databasen tilgir ikke utilsiktede slettinger, og vertsleverandøren beholder ikke kopier for alltid. Ta en sikkerhetskopi nå, og først deretter åpner du brukerlisten.