Skip to content

Allt om WordPress, webbutveckling — och mer därtill

🧹 Hur du massraderar WordPress-användare med en specifik roll

🧹 Hur du massraderar WordPress-användare med en specifik roll

Tolvhundra spamsigneringar efter en annonskampanj. Trehundra testkonton som ingen raderade efter lansering. Hundra bidragsgivare som slutade för ett halvår sedan. Allt detta ligger i sajtens databas som dödvikt och växer varje månad.

Att radera den här barlasten en och en är ett jobb för en robot, inte en människa. Standardtabellen i WordPress visar 20 användare per sida. Med tusen konton innebär det 50 klick på "Radera" och 50 bekräftelser. Efter andra dussinet vill du stänga webbläsaren och låtsas att problemet inte finns.

Men du kan lösa problemet på fem minuter. WordPress erbjuder fyra verktyg för massrensning av användare efter roll: från det inbyggda filtret som inte kräver några tillägg alls till direkt SQL i phpMyAdmin. Vi går igenom varje verktyg med instruktioner, skärmbilder och framför allt hur du undviker att låsa ut dig själv från sajten.

💡 Snabb översikt:

  • Gör en fullständig backup av databas och filer; det här är inget råd, det är en försäkring mot katastrof
  • Filtrera användare efter roll med de inbyggda massåtgärderna; detta fungerar för ett hundratal eller ett par hundra konton
  • Installera Bulk Delete om du behöver finkorniga filter: efter registreringsdatum, inaktivitet eller avsaknad av inlägg
  • Med WP-CLI löses uppgiften med ett enda kommando, oavsett volym, inklusive tiotusentals
  • Direkt SQL ger absolut kontroll men kräver försiktighet: ett enda stavfel i WHERE kan kosta dig administratörsåtkomsten

Vad du ska göra innan du raderar

Tre åtgärder som räddar dig från oåterkalleliga konsekvenser. Hoppa över någon av dem och du riskerar inte bara innehåll utan sajtens funktionalitet.

Fullständig backup. En backup av databasen och filerna är det enda sättet att ångra en massradering. UpdraftPlus fungerar bra (det skickar säkerhetskopior till Google Drive, Dropbox eller din S3), liksom WPvivid. På webbhotell med cPanel, använd den inbyggda Backup Wizard; den är snabbare och belastar inte PHP-arbetare.

Exportera användarlistan. Om data från kontona som ska raderas kan behövas för granskning eller rapportering, exportera den först. Sökväg: "Användare" → "Alla användare" → "Exportera"-knappen högst upp → CSV-format. Spara filen lokalt. Du kan inte återskapa ett konto efter DELETE från databasen, bara från en backup.

Innehållsgranskning. Filtrera användare efter roll och titta på kolumnen "Inlägg" för att se hur många inlägg och sidor som kommer att stå utan författare. Bestäm i förväg: ska du överföra innehåll till en administratör vid radering, eller radera det tillsammans med kontona? Kommentarer från raderade användare finns kvar på sajten (författaren visas som "Raderad användare"); detta påverkar dem inte.

Metod 1: inbyggda massåtgärder

Inga tillägg behövs. Allt du behöver finns redan i WordPress kärna. Detta fungerar för volymer upp till ett par hundra konton åt gången; utöver det börjar du stöta på långsamhet och timeout.

Steg 1: filtrera efter roll. Gå till "Användare" → "Alla användare". Ovanför tabellen finns en rullgardinslista med roller. Välj den du behöver (till exempel "Prenumerant") och klicka på "Filtrera". WordPress visar endast användare med den rollen.

Filtrera WordPress-användare efter roll i adminpanelen

Steg 2: objekt per sida. Som standard ser du 20 poster. För masshantering räcker inte det. Knappen "Skärmalternativ" (längst upp till höger) öppnar en panel där du kan ställa in fältet "Antal objekt per sida" till 200, 500 eller till och med 999. Klicka på "Verkställ", sidan laddas om och visar hela listan i en enda omgång.

Ställa in antal objekt per sida i WordPress adminpanel

Steg 3: massmarkering. Kryssrutan i tabellhuvudet (bredvid rubriken "Användarnamn") markerar alla på sidan på en gång. Avmarkera därefter manuellt dem du vill behålla: administratörer, redaktörer, nyckelförfattare.

Massmarkering av alla användare på sidan för radering

Steg 4: radering och omfördelning av innehåll. I rullgardinsmenyn "Massåtgärder" ovanför tabellen, välj "Radera" och klicka på "Verkställ". WordPress frågar vad som ska göras med innehållet från användarna som raderas: alternativet "Tillskriv allt innehåll till" plus att välja en administratör i det intilliggande fältet bevarar inlägg; "Radera allt innehåll" raderar allt utan möjlighet till återställning. Bekräfta, och du är klar.

Dialogruta för innehållsattribuering vid massradering av användare

Den inbyggda metoden är pålitlig för små och medelstora volymer. Men när du har att göra med tusentals genererar varje sida dussintals SQL-frågor via PHP, och servern kraschar antingen på max_execution_time eller stannar helt. För de fallen, använd verktygen nedan.

Metod 2: tillägget Bulk Delete

Bulk Delete är ett gratis plugin med över 300 000 aktiva installationer. Dess främsta fördel jämfört med standardmetoden är batchbearbetning. Pluginet raderar användare i omgångar om 50-100, utan att skapa toppbelastning på databasen. Och det erbjuder filter som inte finns i WordPress kärna.

Installationen är standard: "Plugins" → "Lägg till nytt" → sök efter "Bulk Delete" → "Installera" → "Aktivera". Efter aktivering visas en "Bulk WP"-sektion i sidofältsmenyn, och i den "Bulk Delete Users".

Här väljer du rollen för radering och konfigurerar ett eller flera ytterligare filter:

  • registreringsdatum: före eller efter ett angivet datum;
  • inaktivitet: användare som inte har loggat in de senaste N dagarna;
  • inga inlägg: konton utan ett enda inlägg;
  • metafältsvärde: till exempel, radera alla med billing_country = 'RU'.
Massraderingssida för användare i tillägget Bulk Delete

Innan du kör raderingen, se till att klicka på "Preview Users"; pluginet visar en lista med ID:n och e-postadresser som matchar filtren. Kontrollera att du raderar exakt dem du behöver radera. Kryssa sedan i bekräftelserutan och klicka på "Bulk Delete".

Noterbara alternativ är WP Bulk Delete, som inte bara kan radera användare utan även inlägg, sidor, kommentarer och taxonomier (en universell städare, även om vissa funktioner finns i Pro), och User Role Editor, som främst är ett verktyg för att redigera roller och skapa anpassade sådana, men dess gränssnitt har också massradering per roll (fliken "Users").

Metod 3: WP-CLI

WP-CLI löser uppgiften med ett enda konsolkommando. Ingen paginering, inga timeouts. Du behöver shell-åtkomst till servern (SSH på en VPS, dedikerad hosting eller lokal utvecklingsmiljö). På billig delad hosting är WP-CLI oftast inte tillgängligt.

Först, hämta ID:n för alla användare med den önskade rollen:

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

Resultatet är en sträng med mellanslagsseparerade ID:n: 12 45 78 134 256. Radera dem med innehållsomtilldelning till administratören (ID=1):

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

Du kan göra det i ett kommando, utan den mellanliggande listan:

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

Flaggan --delete-posts istället för --reassign raderar både användare och deras innehåll fullständigt. Använd den bara om du är säker på att innehållet från de raderade kontona inte behövs.

WP-CLI arbetar direkt mot databasen och förbigår PHP. För hundratusen användare körs kommandot på 2-5 sekunder. Detta är storleksordningar snabbare än något plugin, och säkrare än manuell SQL, eftersom wp user delete kaskadrensar metadata utan att lämna kvar föräldralösa rader.

Metod 4: direkt SQL

För dig som behöver absolut kontroll över varje fråga. SQL via phpMyAdmin eller MySQL-konsolen sätter inga begränsningar men förlåter heller inga misstag.

Börja med att säkerhetskopiera databasen. Det här är ingen rekommendation; det är ett strikt krav. Ett enda stavfel i WHERE (till exempel administrator istället för subscriber) och du förlorar åtkomsten till sajten. Återställning är bara möjlig från en dump.

Logga in i phpMyAdmin via din hostingpanel, välj WordPress-databasen och öppna fliken "SQL".

Steg 1: hitta ID:n. Roller lagras i tabellen wp_usermeta, fältet meta_key = 'wp_capabilities'. Byt ut subscriber mot önskad roll och justera wp_-prefixet om det avviker:

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

Granska resultatet visuellt. Kopiera de ID:n du får fram.

Steg 2: omfördela innehåll. Byt ut 1 mot ID:t för användaren du vill flytta inlägg till. Listan 123, 456, 789 ska vara ID:n från steg 1:

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

Steg 3: ta bort användare och metadata. I exakt den här ordningen:

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

Om du också behöver ta bort inlägg och kommentarer, rensa barntabellerna först:

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

Och först därefter wp_users och wp_usermeta. Ordningen är avgörande: barnposter först, sedan föräldraposter, annars får du överträdelser av främmande nycklar.

Efter att du kört SQL, kontrollera noga att de borttagna användarna verkligen har försvunnit från adminpanelen och att inlägg (om du omfördelade dem) syns under den nya författaren.

⁉️🤔 Vanliga frågor

Kan en borttagen användare återställas?

Nej. WordPress sparar inte borttagna konton i ett papperskorgsläge, till skillnad från inlägg och sidor. Enda sättet att få tillbaka dem är att återställa från en databassäkerhetskopia. Det är precis därför en fullständig säkerhetskopia före all massradering är oeftergivlig: det är din enda försäkring.

Vad händer med en borttagen användares innehåll?

Det beror på valet som görs vid borttagningen. Alternativet "Tillskriv allt innehåll till" plus en administratör innebär att inlägg och sidor bevaras, bara med en ändrad författare. Alternativet "Ta bort allt innehåll" raderar inlägg, sidor och mediafiler utan möjlighet att återställa dem. Kommentarer från borttagna användare ligger kvar på sajten, med författaren visad som "Borttagen användare"; att ta bort dem är en separat åtgärd.

Vilken är den snabbaste metoden för 10 000+ användare?

WP-CLI. Ett enda kommando wp user delete $(wp user list --role=subscriber --format=ids) --reassign=1 körs på 2-5 sekunder även för hundratusen konton. SQL via phpMyAdmin är också snabbt men kräver att du manuellt kopierar ID:n mellan frågor. Plugins och den inbyggda metoden är oanvändbara för sådana volymer: de skickar data genom PHP och slår i max_execution_time-gränser.

Måste jag ta bort wp_usermeta tillsammans med användare?

Ja. Om du bara tar bort från wp_users blir föräldralösa rader med metadata för icke-existerande konton kvar i wp_usermeta. De förstör inte sajten, men de sväller upp databasen. Pluginet Bulk Delete och WP-CLI (wp user delete) rensar metadata automatiskt. Med manuell SQL, se till att lägga till en andra fråga: DELETE FROM wp_usermeta.

Kan jag bara ta bort användare utan inlägg?

Ja. Pluginet Bulk Delete har ett färdigt filter "Användare utan inlägg". I WP-CLI kedjar du två kommandon: hämta först ID:n för användare med rollen, kontrollera sedan för var och en om det finns inlägg med wp post list. I SQL lägger du till villkoret AND u.ID NOT IN (SELECT DISTINCT post_author FROM wp_posts).

Nu om säkerhet i praktiken. Det farligaste scenariot är borttagning via SQL utan förhandsgranskning. Även erfarna administratörer gör misstag i WHERE. En säkerhetskopia före SQL är en regel som lönar sig en gång av hundra. Men den gången är det då den räddar sajten.

Vad du ska välja för din uppgift

Fyra metoder täcker alla scenarier, från ett par dussin spamregistreringar till hundratusen döda konton. Här är en snabb matris:

  • Färre än 200 användare, vill inte installera plugins → inbyggda massåtgärder. Tre klick, och problemet är löst.
  • Upp till 5 000, behöver filter på datum eller inaktivitet → pluginet Bulk Delete. Det säkraste alternativet för den som inte arbetar med konsolen.
  • Vilken volym som helst, har SSH-åtkomst → WP-CLI. Ett kommando, 2-5 sekunder, klart.
  • Egen server, behöver kontroll över varje DELETE → direkt SQL. Men bara om du vet exakt vad du gör och har tagit en säkerhetskopia.

Huvudregeln är oberoende av metod: säkerhetskopiera, säkerhetskopiera och säkerhetskopiera igen. WordPress databas förlåter inte oavsiktliga borttagningar, och webbhotell sparar inte kopior för evigt. Gör en säkerhetskopia nu, och öppna först därefter användarlistan.