Popis
WP-Sweep vyhledává řádky, které WordPress zanechává, a odstraňuje je. Revize příspěvků, které jste upravovali před lety, metadata patřící k příspěvku, který byl smazán, termíny, k nimž není přiřazeno nic, vztahy mezi termíny směřující k příspěvkům, které již neexistují, prošlé dočasné údaje: nic z toho není nikde v wp-admin viditelné, a přitom se to všechno nachází ve vaší databázi.
Využívá standardní funkce WordPressu pro mazání tam, kde je možné se k danému řádku dostat, namísto spouštění přímých mazacích dotazů, takže háčky, na které se spoléhají jiné pluginy, se stále spouštějí. Pouze řádky, které API odmítá zpracovat – osamocená metadata, jejichž ID objektu je 0 – jsou mazány přímo.
Funkce
- Revize
- Automatické koncepty
- Smazané příspěvky
- Neschválené komentáře
- Komentáře se spamem
- Smazané komentáře
- Osamocené metadata příspěvku
- Meta údaj o osamoceném komentáři
- Meta pro osamocené uživatele
- Osiřelá položka
- Vztahy mezi osamocenými termíny
- Nepoužité pojmy
- Duplicitní metadata příspěvku
- Duplicitní meta komentáře
- Duplikovaná meta uživatele
- Duplicitní položka
- Dočasné možnosti
- oEmbed ukládá do mezipaměti v metadatech příspěvku
- Optimalizuje tabulky databáze
Odstranit použité funkce
wp_delete_post_revision()wp_delete_post()wp_delete_comment()delete_post_meta()delete_comment_meta()delete_user_meta()delete_term_meta()wp_remove_object_terms()wp_delete_term()delete_transient()delete_site_transient()
Známé neslučitelnosti
Tyto pluginy ukládají data na místech, která WP-Sweep vyhodnocuje jako osamocená. Před spuštěním čištění chraňte jejich meta klíče pomocí filtrů v sekci „Použití“.
- Vlastní písma
- Elementor Popup Builder
- MailPress
- Meta Slider
- Polylang
- Slider Revolution
- Portfolio společnosti Viba
- WPML
Dary
Strávil jsem většinu svého volného času vytvářením, aktualizací, údržbou a podporou těchto pluginů, pokud máte opravdu rádi mé pluginy a mohli byste mi ušetřit pár dolarů, budu opravdu vděčný. Pokud ne, neváhejte je používat bez jakýchkoli závazků.
Použití
Každé prohledání je nevratné, proto si nejprve zálohujte databázi.
Na obrazovce je uveden seznam všech prohledávání spolu s krátkým popisem toho, co se odstraní, kolik položek to je a jaký podíl z celé tabulky představují. Zaškrtněte ty, které chcete, a použijte hromadnou akci Sweep, nebo použijte tlačítka Sweep a Details v jednotlivých řádcích, jedno po druhém. Na obrazovce není potřeba žádný JavaScript: tlačítka jsou běžné odkazy a hromadná akce je běžný formulář.
Neexistuje žádná obrazovka s nastavením. Jediná věc, kterou stojí za to upravit – počet položek, které se zobrazují v seznamu Details (výchozí hodnota je 500) – je filtr wp_sweep_limit_details. Tento limit existuje proto, že celý vzorek je držen v paměti a zapsán na stránku.
WP-CLI
wp sweep --all
wp sweep revisions
wp sweep revisions auto_drafts deleted_posts
REST API
Všechny tři postupy vyžadují oprávnění activate_plugins.
GET /wp-json/sweep/v1/count/<name>
GET /wp-json/sweep/v1/details/<name>
DELETE /wp-json/sweep/v1/sweep/<name>
Názvy položek
revisions, `auto_drafts`, `deleted_posts`, `unapproved_comments`, `spam_comments`, `deleted_comments`, `transient_options`, `orphan_postmeta`, `orphan_commentmeta`, `orphan_usermeta`, `orphan_termmeta`, `orphan_term_relationships`, `unused_terms`, `duplicated_postmeta`, `duplicated_commentmeta`, `duplicated_usermeta`, `duplicated_termmeta`, `optimize_database`, `oembed_postmeta`.
Filtry
wp_sweep_postmeta_whitelist(pole) — klíče meta dat příspěvků, které nesmí být nikdy smazány při čištění osamocených nebo duplicitních meta dat příspěvků.*odpovídá libovolné posloupnosti znaků. Výchozí hodnota: prázdné.wp_sweep_commentmeta_whitelist(pole) — totéž, pro metadata komentářů.wp_sweep_usermeta_whitelist(pole) — totéž, ale pro uživatelská metadata.wp_sweep_termmeta_whitelist(pole) — totéž, ale pro metadata termínů.wp_sweep_excluded_taxonomies(pole) — taxonomie, které jsou vynechány při čištění opuštěných vztahů mezi termíny. Výchozí hodnota:array( 'link_category' ).wp_sweep_excluded_termids(pole) — ID termínů, které jsou vyňaty z čištění nepoužívaných termínů. Výchozí nastavení: výchozí termín každé taxonomie a všechny termíny, které jsou nadřazené jiným termínům.wp_sweep_limit_details(int) — počet položek zobrazených v seznamu podrobností. Výchozí hodnota: 500.wp_sweep_capability(řetězec$capability, řetězec$context) — požadované oprávnění.$contextje jedna z hodnotsweep,ajaxneborest.wp_sweep_total_count(int$count, string$name) — celkový počet řádků, na jehož základě se počítá procentuální podíl daného sweepu.wp_sweep_count(int$count, string$name) — počet položek, které by operace sweep odstranila.wp_sweep_details(pole$details, řetězec$name) — ukázkový seznam zobrazený funkcí Details.wp_sweep_sweep(řetězec$message, řetězec$name) — zpráva zobrazená po dokončení prověrky.
Akcie
wp_sweep_admin_post_sweep, `wp_sweep_admin_comment_sweep`, `wp_sweep_admin_user_sweep`, `wp_sweep_admin_term_sweep`, `wp_sweep_admin_option_sweep` and `wp_sweep_admin_database_sweep` all fire below the sweep table, in that order.
Zabraňte smazání konkrétních meta klíčů příspěvků:
add_filter( 'wp_sweep_postmeta_whitelist', function ( $meta_keys ) {
$meta_keys[] = '_my_plugin_setting';
$meta_keys[] = '_acme_*';
return $meta_keys;
} );
Vyloučit další taxonomii z prověřování vztahů mezi osamocenými termíny:
add_filter( 'wp_sweep_excluded_taxonomies', function ( $taxonomies ) {
$taxonomies[] = 'product_type';
return $taxonomies;
} );
Snímky obrazovky



Instalace
- Nainstalujte a aktivujte plugin. Obrazovka se zobrazí na adrese
WP-Admin -> Nástroje -> WP-Sweep. - Než provedete jakékoli vyčištění, zálohujte si databázi. Každé vyčištění je nevratné a nelze jej vrátit zpět.
Nejčastější dotazy
-
Obrazovka Nástroje –> Vyčistit obsahuje novou adresu
-
Funkce se stále nachází v sekci Nástroje, ale adresa se změnila z
tools.php?page=wp-sweep/admin.phpnatools.php?page=wp-sweep. Upravte si prosím všechny záložky.Původní adresa vycházela ze starého formátu „název souboru pluginu jako slug menu“, který do adresy URL stránky vkládal název instalačního adresáře pluginu. To je také důvod, proč se dříve zobrazovaly chyby na obrazovce u všech, kteří si nainstalovali WP-Sweep do adresáře s jiným názvem — ať už ručně přejmenovaného, nebo rozbaleného jako
wp-sweep-2.0.0. Nyní se již nic z toho neděje. -
Kam se poděla funkce „Vymazat vše“?
-
Každý řádek má zaškrtávací políčko a tabulka disponuje hromadnou akcí Sweep. Zaškrtnutím políčka v záhlaví a provedením této akce tedy dosáhnete stejného výsledku jako při použití funkce „Sweep All“ – a navíc můžete vynechat ty položky, které nechcete zahrnout.
-
Můj kód, který volá funkci WPSweep::get_instance(), přestal fungovat
-
Ve verzi 2.0.0 byly třídy přejmenovány:
WPSweepse nyní jmenujeWP_SweepWPSweep_Apise nyní nazýváWP_Sweep_APIWPSweep_Commandse nyní nazýváWP_Sweep_Command
Takže
WPSweep::get_instance()->sweep( 'revisions' )se změní naWP_Sweep::get_instance()->sweep( 'revisions' ). Neexistuje žádný kompatibilní alias, takže starý název vyvolá fatální chybu, místo aby se operace tiše nezdařila.Každý filtr a každá akce
wp_sweep_admin_*_sweepsi zachovává svůj původní název. -
Jaké filtry mohu použít k ochraně dat před smazáním?
-
Čtyři filtry podle typu přijímají seznam meta klíčů, které nesmí být nikdy smazány, a každý z nich podporuje
*jako zástupný znak:add_filter( 'wp_sweep_postmeta_whitelist', function ( $keys ) { $keys[] = '_my_plugin_setting'; $keys[] = '_acme_*'; return $keys; } );Totéž platí pro
wp_sweep_commentmeta_whitelist,wp_sweep_usermeta_whitelistawp_sweep_termmeta_whitelist. Termíny jsou chráněny pomocíwp_sweep_excluded_termidsa taxonomie jsou vyňaty z čištění opuštěných vztahů mezi termíny pomocíwp_sweep_excluded_taxonomies.Ve verzi 2.0.0 tyto seznamy také chrání duplikované meta-prohledávání, což dokumentace sice vždy uváděla, ale kód to nikdy nedělal.
-
Klíč, který jsem chránil, byl stejně smazán, nebo toho zůstalo zachováno až příliš mnoho
-
Před verzí 2.0.0 se k vyloučení používala klauzule SQL
LIKE, přičemžLIKEinterpretuje podtržítko jako zástupný znak pro jeden znak. Vzor_my_keyse proto shodoval také sXmy!keya s mnoha dalšími výrazy. Nyní se porovnávání provádí v PHP, takže podtržítko je podtržítko a pouze*je zástupný znak. Zkontrolujte svůj seznam, pokud jste se spoléhali na staré chování. -
Zanechá plugin WP-Sweep po odstranění nějaké stopy?
-
Vůbec nic. WP-Sweep neukládá žádné řádky nastavení, nevytváří žádné databázové tabulky, neregistruje žádná oprávnění a nenaplánovává žádné události. Skript
uninstall.phpse spustí v každém případě a provede úklid po celé síti, nikoli pouze na prvních sto webech.
Recenze
Autoři
WP-Sweep je otevřený software. Následující lidé přispěli k vývoji tohoto pluginu.
SpolupracovníciPlugin „WP-Sweep“ byl přeložen do 23 jazyků. Děkujeme všem překladatelům za jejich pomoc.
Přeložte “WP-Sweep” do svého jazyka.
Zajímá vás vývoj?
Prohledejte kód, podívejte se do SVN repozitáře, nebo se přihlaste k odběru protokolu vývoje pomocí RSS.
Přehled změn
2.0.0
- OPRAVENO: Nepoužívané termíny čerpaly údaj „nepoužívané“ ze sloupce s počtem a vlastní čítač jádra počítal zveřejněné příspěvky — takže termín používaný pouze v konceptech, příspěvcích čekajících na zveřejnění, soukromých příspěvcích nebo příspěvcích v koši vykazoval počet nula a byl smazán, čímž byly odstraněny i jeho vztahy. Tyto příspěvky se vrátily bez přiřazených termínů a bez jakéhokoli vysvětlení. Termín nyní musí být přiřazen alespoň k něčemu, byť k čemukoli
- OPRAVENO: Při hromadném mazání termínů taxonomie se již nic nezaznamenávalo. Problém byl vyřešen pomocí
DELETE FROM wp_terms WHERE term_id NOT IN ( SELECT term_id FROM wp_term_taxonomy ), což odstranilo všechny volné řádky v tabulce, nikoli pouze ty, které právě zůstaly osamocené v důsledku hromadného mazání. Spolu s nimi byly smazány i řádky, které obrazovka ani nezapočítala, ani nezobrazila. Nyní uvádí názvy termínů, které se staly osamocenými. - OPRAVENO: Funkce „Orphaned Term Relationships“ určovala, zda je řádek osamocený, na základě vyhledání jeho
object_idv tabulcewp_posts— což je správný postup pouze v případě, že taxonomie patří k příspěvkům. U taxonomie registrované vůči uživatelům nebo komentářům jeobject_idID uživatele nebo komentáře, takže každý vztah, jehož ID náhodou převyšoval počet příspěvků, byl smazán, i když uživatel stále existoval.link_categorybylo z tohoto důvodu ručně vyloučeno; vyloučení se nyní odvozuje od toho, k čemu je jednotlivá taxonomie přiřazena - OPRAVENO: Prohledávání oEmbed našlo shodu s
%_oembed_%, a ve vzoru LIKE se podtržítko shoduje s libovolným jednotlivým znakem – znamenalo to tedy „libovolný meta klíč obsahující oembed s libovolným znakem na začátku nebo na konci“, a šlo o shodu typu obsahuje namísto shody s předponou. Klíče patřící jiným pluginům byly trvale smazány spolu s mezipaměťmi. WordPress je zapisuje jako_oembed_{hash}, takže vzorec je nyní ukotven na začátku a podtržítka jsou escapována. - OPRAVENO: Procházení oEmbed bylo jediným typem procházení meta dat, které nikdy nekonzultovalo seznam chráněných klíčů, takže klíč, který web explicitně přidal do
wp_sweep_postmeta_whitelist, byl přesto smazán – seznam byl sice načten, ale následně ignorován - OPRAVENO: Při optimalizaci databáze byl spuštěn příkaz
SHOW TABLESbez předpony, což zahrnuje všechny tabulky ve schématu. V databázi sdílené mezi instalacemi — což je běžné uspořádání hostingu — zobrazení podrobností uvádělo tabulky všech spolunájemců a optimalizace spustila příkazOPTIMIZE TABLEi pro instalace, které tento správce nespravuje. Nyní je rozsah omezen na předponu této instalace, přičemž pro web, který vyžaduje více, lze použít příkazwp_sweep_optimize_tables. - AKTUÁLNÍ ZPRÁVA: Vyžaduje WordPress 6.8 a PHP 8.2, což představuje zvýšení požadavků oproti verzím 6.0 a 7.4.
- AKTUÁLNÍ ZPRÁVA: Stránka zůstává v sekci „Nástroje“, ale její adresa se změnila z
tools.php?page=wp-sweep/admin.phpnatools.php?page=wp-sweep. Starý formulář zahrnoval do adresy URL název instalačního adresáře. - AKTUÁLNÍ ZPRÁVA: Třídy byly přejmenovány z
WPSweepnaWP_Sweep, zWPSweep_ApinaWP_Sweep_APIaWPSweep_Command–>WP_Sweep_Command. Všechny filtry a akce si zachovávají své názvy. - AKTUÁLNÍ ZPRÁVA: Funkce
WP_Sweep::$limit_detailsjiž neexistuje. Vyvolávejte ji pomocí funkcelimit_details()a upravujte ji pomocí filtruwp_sweep_limit_details. - AKTUÁLNÍ ZPRÁVA: Šest akcí
wp_sweep_admin_*_sweepse spouští pod jedinou tabulkou „sweep“ v pořadí, v jakém tomu bylo vždy, a nikoli pod šesti samostatnými tabulkami. - AKTUÁLNÍ ZPRÁVA: Funkce „Sweep All“ již není k dispozici. Zaškrtněte políčko v záhlaví a místo toho použijte hromadnou akci
Sweep, která provede totéž a umožní vám některé řádky vynechat. - NOVINKA: Hromadné provádění sweepů. Zaškrtněte požadované sweapy a spusťte je najednou, místo abyste je prováděli jeden po druhém.
- NOVINKA: Hromadné operace jsou na obrazovce seskupeny. Ve filtrovaném zobrazení je každá z nich zařazena pod záhlaví s ikonou – Příspěvek, Komentář, Uživatel, Termín, Možnost, Databáze –, přičemž se jedná o jednu tabulku, takže jedinou hromadnou operací se zpracují všechny položky, které zaškrtnete. Při seřazení sloupce se záhlaví skryjí, místo aby zůstala a popisovala řádky, které již neseskupují.
- NOVINKA: Skupinové filtry a sloupce s možností třídění, založené na skutečné funkci
WP_List_Table. - NOVINKA: Celá obrazovka funguje i při vypnutém JavaScriptu. Akce v jednotlivých řádcích jsou běžné odkazy s jednorázovým kódem a hromadná akce je běžné odeslání formuláře.
- NOVINKA: Seznamy povolených klíčů meta chrání jak duplikované meta-sweepy, tak i ty osamocené, což sice vždy uváděl soubor readme, ale kód to nikdy nezajišťoval.
- NOVINKA: Filtry
wp_sweep_capabilityawp_sweep_limit_details. WP-Sweep nemá obrazovku nastavení: Pomocí filtruwp_sweep_limit_detailslze změnit limit počtu detailů. - NOVINKA: U každého úklidu je pod jeho názvem uveden popis toho, co se při něm odstraňuje, a počty, u nichž se vyplatí zasáhnout, jsou zvýrazněny.
- NOVINKA: Skript
uninstall.php, který provádí úklid v celé síti, nikoli pouze na prvních sto webech. Samotný WP-Sweep nic neukládá: žádné řádky nastavení, žádné tabulky, žádná oprávnění ani naplánované události. - NOVINKA: Struktura byla upravena na
includes/v souladu s příručkou k pluginům. - NOVINKA: Testovací sady PHPUnit a vitest a automatizované testování (CI) pomocí GitHub Actions pro šest kombinací WordPressu a PHP, a to jak pro jednotlivé weby, tak pro multisite.
- ZMĚNA: Vyloučení klíčů Meta se porovnávají v PHP, nikoli pomocí SQL
LIKE, takže podtržítko v chráněném klíči je považováno za podtržítko, nikoli za zástupný znak. - ZMĚNA: Každé volání databáze prochází jednou metodou a každý dotaz je připraven.
- OPRAVENO: Chyba typu „stored XSS“ na obrazovce pro správu. Seznam podrobností byl sestaven zřetězením řetězců a vložen jako HTML, takže jméno autora komentáře obsahující značky HTML se spustilo jako skript v prohlížeči správce.
- OPRAVENO: Plugin již nevytváří cesty na základě názvu vlastního adresáře, takže se skript pro správu načte i v případě, že je plugin nainstalován v jiném adresáři než
wp-sweep. - OPRAVENO: Filtrování
wp_sweep_excluded_termidsna prázdné pole vedlo k neplatnému SQL dotazu, v důsledku čehož zůstával počet nepoužívaných termínů prázdný. - OPRAVENO: Termín byl vyloučen z čištění nepoužívaných termínů vždy, když se jeho ID shodovalo s volbou
default_<taxonomy>, a to i v případě, že tato volba odkazovala na termín, který již neexistuje. WordPress dodávádefault_link_categorynastavenou na hodnotu 2, takže na většině webů se termín s ID 2 tiše odmítal vyřadit. - OPRAVENO: Při provádění hromadného vymazání bez JavaScriptu byla data smazána a nic se nezobrazovalo; výsledek se nyní zobrazuje.
- OPRAVENO: Smyčka při odinstalaci v režimu multisite se zastavila na 100 webech, načítala objekty celého webu za účelem čtení jednoho sloupce a zanechala zásobník přepínačů o jeden krok zpět.
- OPRAVENO: Parametry požadavku jsou očištěny a ověřeny podle vlastního seznamu útoků daného pluginu.
- OPRAVENO: Dvě hlášení „Sweep Complete“
wp sweep, která se zobrazovala, byla jedinými řetězci v pluginu, které nikdy neprošly překladovými funkcemi
