Vypadá to jako jednoduchá situace, která na první pohled ani není problémem: potřebujete smazat uživatele nebo obsah. Může to být uživatel od zaměstnance, který odešel, může to být sezónní obsah, který už se nikdy nepoužije nebo něco jiného.
Obsah článku
Uživatelsky vytvořená data a metadata, tedy např. logy nebo chcete web zbavit starého obsahu (článků, štítků nebo uživatelů, které na webu nechcete). Tohle zadání tedy znamená, že musíme vědět nebo určit:
- co chceme smazat (umět vybrat pouze potřebná data),
- jakým postupem je smažeme, aby to bylo efektivní,
- jak si ověříme, že jsme data smazali a nepoškodili přitom funkčnost webu.
Rizika při mazání obsahu
- Nechtěná ztráta dat: Nesprávný výběr dat k mazání může vést k nevratné ztrátě obsahu.
- SEO dopady: Odstranění veřejných stránek povede k chybě 404, takže je potřeba tyto odkazy přesměrovat na nové.
- Poškození interních odkazů: Smazáním obsahu se mohou přerušit interní vazby, což omezuje funkčnost aplikace (typicky smazané obrázky nebo nedostupné bloky nebo wdigety ve vizuálním editoru).
- Ztráta mediálních souborů: Pokud smažete originál, bude smazaný. 🙂 Pokud smažete jen náhledové obrázky, můžete z originálu vygenerovat nové.
- Nefunkční pluginy a šablony: Některé pluginy a šablony používají specifický obsah, jehož smazání může způsobit chyby. Třeba předlohy proč části stránek, prvky pro design , shortcody apod.
- Ztráta uživatelských dat: Smazání uživatelů znamená ztrátu jejich obsahu a aktivit.
Jak smazat uživatele nebo obsah
WordPress má jednotné rozhraní, takže všechny přehledové tabulky se ovládají stejně. Jen doporučím přidat si přes záložku Nastavení zobrazených informací vpravo nahoře více položek. Dobrý hosting jich zvládne 100, jakmile po odeslání požadavku narazíte na chybu 50x, pak už má požadavek příliš velkou datovou velikost (nebo je url příliš dlouhá) a narážíte tedy na limit nastavení webového serveru (což je ok). Najděte si optimální hodnotu.

Při mazání článků, stránek a custom post typů postupujete v podstatě pořád stejně. CPT jsou tedy různé šablony a jejich části, třeba sekce
- Vzhled > Patterns pro Gutenberg,
- „šablony“ pro Elementor nebo
- „Elements“ u GeneratePress a mnoho dalších příkladů.

Když chcete promazat pojmy v taxonomii, tedy snížit počet štítků nebo kategorií, nejprve si je seřaďte podle počtu příspěvků. Ty, které nemají žádné příspěvky, můžete smazat, protože na frontendu nemají žádný přínos. Jak jistě víte, samotné články tím nesmažete.
Na webu nemusíte pro příspěvky používat štítky, ale musíte mít aspoň jednu rubriku. Rubriku tedy můžete od článku odmazat, vždycky tam aspoň jedna zůstane – to se ovšem netýká custom post typu, kde tato podmínka není a takový záznam může zůstat bez taxonomie (neboli rubriky).

Při mazání uživatele je nezbytné převést jeho obsah na jiného, jinak se jím vytvořený obsah skutečně smaže. Pokud mažete původního správce, který na webu vytvářel klíčové stránky a nabídky, pak si fakt dejte pozor na to, abyste jeho obsah nesmazali. Často tento uživatel vytvářel významnou část webu, takže byste o tuto velkou část webu přišli. Potvrzeno v praxi, stalo se!

Dobrou alternativou ke smazání uživatele je odebrání role, odhlášení všech sezení, změna hesla a e-mailové adresy. Uživatel nemusí mít roli. Když mu změníte e-mailovou adresu, nebude si moct poslat resetovací odkaz a když ho odevšad na dálku odhlásíte, budete mít jistotu, že je tento uživatel deaktivovaný.

Speciální postup pro mazání
A pak jsou situace, kdy tohle všechno nestačí. Různé pluginy mají své různé přehledy a způsoby práce s obsahem, který vytvářejí. Třeba plugin Activity Log neumožňuje vybrat položky ke smazání, místo toho se nastavuje doba, po kterou položky ukládá (třeba 30 dní). Spousta pluginů nepoužívá post types, ale tabulku options, kam ukládá svá nastavení „do proměnných“ nebo do transientů. To je pak obtížné vyčistit, navíc je to téma na jiný článek.
Vcelku se mi osvědčil plugin WP Bulk Delete, který toho umí dost:
- mazat revize, koš a drafty,
- mazat (custom) post typy, taxonomie, uživatele,
- mazat podle různých kritérií jako čas nebo custom fields (některé funkce jsou placené)

Bezesporu jsou i jiné a další pluginy, třeba pro práci s WooCoomerce, rád si nechám poradit, zkušenost s nimi nemám.
Dalším postupem, který někdy používám, je změna post typu. Za určitých okolností se vyplatí třeba stránky nemazat, ale převést je na posty a dál s nimi pracovat v blogu. Ke změny typu článku poslouží plugin jako Post Type Switcher. Použil jsem to při importu dat pro fotogalerie (nedávno jsem o tom psal). Typ článku je pouze jeden sloupec v databázi a nemá zásadní vliv na další vazby.
Hrabání do databáze
Mazání dat přímo v databázi je vošajstlich, musíte fakt znát její strukturu. Např. posts -> postmeta a další. Databáze je relační, takže mazání musí být výsledkem operace JOIN – spojení více výsledků z více tabulek. Jinak si poškodíte relace – vazby mezi datovými řádky a pak je to celé neopravitelné.
Snadno jdou mazat např. logové záznamy, které jsou izolované, nemají žádné další vazby, jsou obvykle jen v tabulce v posts. Toho bych se nebál – tabulka je samostatná, lze ji zálohovat a jejím smazáním zmenšíme velikost databáze, nepřijdeme o žádná kritická data.

Jak se připravit a postupovat při mazání
- Záloha: Před provedením jakýchkoli změn proveďte kompletní zálohu databáze, případně selektivní zálohy tabulek. V tomto případě je zálohou také export do CSV (lze pak importovat zpět). Udělejte také další zálohu webu, resp. nahraných dat (obrázků, dokumentů).
- Dry run: Pokud to jen trochu jde, simulujte si operaci na sucho, na pracovní verzi webu, na malém vzorku dat. Stačí překlep nebo když zazvoní telefon a jeden špatně mířený klik…
- Provedení: Nenechávejte prostor pro chybu, když nebudete vědět, poraďte se. Smazaná data vám ani AI nezachrání. A nepropadejte falešné naději, že záloha vždy všechno zachrání.
- Kontrola odkazů a přesměrování URL: Nastavte přesměrování 301 pro všechny URL, které budou ovlivněny smazáním pojmů nebo článků. Použijte pro to nějaký nástroj, který vám vyhledá neplatné odkazy, aspoň plugin Broken Link Checker nebo po pár dnech Google Search Consoli. Psal jsem o tom: Opravte si neplatné odkazy na webu. Následně pomocí SEO pluginu nebo aspoň pluginu Redirection vše směřujte na nové stránky.