Опис
WP-Sweep проналази редове које Вордпрес оставља за собом и уклања их. Ревизије чланака које сте уређивали пре много година, мета подаци који припадају избрисаном чланку, појмови који ни за шта нису везани, односи појмова који показују на чланке који више не постоје, истекли пролазни подаци: ништа од тога није видљиво нигде у wp-admin, а све је то у вашој бази података.
Користи одговарајуће Вордпрес функције за брисање где год могу да дођу до реда, уместо извршавања необрађених упита за брисање, тако да се куке на које се други додаци ослањају и даље покрећу. Директно се бришу само редови које API одбија да дира — напуштени мета подаци чији је ИБ објекта 0.
Функције
- Ревизије
- Аутоматски нацрти
- Избрисани чланци
- Неодобрени коментари
- Непожељни коментари
- Избрисани коментари
- Напуштени мета подаци чланака
- Напуштени мета подаци коментара
- Напуштени мета подаци корисника
- Напуштени мета подаци појмова
- Напуштени односи појмова
- Некоришћени појмови
- Дупликати мета података чланака
- Дупликати мета података коментара
- Дупликати мета података корисника
- Дупликати мета података појмова
- Пролазне могућности
- oEmbed кешеви у мета подацима чланака
- Оптимизује табеле базе података
Коришћене функције за брисање
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()
Познате неусаглашености
Ови додаци чувају податке на местима која WP-Sweep тумачи као напуштена. Пре чишћења заштитите њихове мета кључеве филтерима наведеним под „Употреба“.
- Custom Fonts
- Elementor Popup Builder
- MailPress
- Meta Slider
- Polylang
- Slider Revolution
- Viba Portfolio
- WPML
Донације
Већину слободног времена посвећујем прављењу, ажурирању, одржавању и подршци ових додатака; ако заиста волите моје додатке и можете да одвојите нешто новца, биће ми заиста драго. Ако не, слободно их користите без икаквих обавеза.
Употреба
Свако чишћење је неповратно, зато прво направите резервну копију базе података.
Екран наводи свако чишћење са кратким описом онога што уклања, колико је то ставки и колики је то део табеле. Означите она која желите и користите групну радњу Очисти или користите дугмад Очисти и Детаљи у сваком реду, једно по једно. Ништа на екрану не захтева JavaScript: дугмад су обичне везе, а групна радња је обичан образац.
Нема екрана подешавања. Једина ствар коју вреди подесити — колико ставки наводи Детаљи, подразумевано 500 — је филтер wp_sweep_limit_details. Ограничење постоји јер се цео узорак држи у меморији и уписује у страницу.
WP-CLI
wp sweep --all
wp sweep revisions
wp sweep revisions auto_drafts deleted_posts
REST API
Све три путање захтевају способност activate_plugins.
GET /wp-json/sweep/v1/count/<name>
GET /wp-json/sweep/v1/details/<name>
DELETE /wp-json/sweep/v1/sweep/<name>
Називи ставки
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`.
Филтери
wp_sweep_postmeta_whitelist(array) — мета кључеви чланака који никада не смеју да се избришу чишћењем напуштених или дуплираних мета података чланака.*одговара било ком низу знакова. Подразумевано: празно.wp_sweep_commentmeta_whitelist(array) — исто, за мета податке коментара.wp_sweep_usermeta_whitelist(array) — исто, за мета податке корисника.wp_sweep_termmeta_whitelist(array) — исто, за мета податке појмова.wp_sweep_excluded_taxonomies(array) — таксономије изузете из чишћења напуштених односа појмова. Подразумевано:array( 'link_category' ).wp_sweep_excluded_termids(array) — ИБ-ови појмова изузети из чишћења некоришћених појмова. Подразумевано: подразумевани појам сваке таксономије, плус сваки појам који је матични неком другом.wp_sweep_limit_details(int) — колико ставки приказује списак „Детаљи“. Подразумевано: 500.wp_sweep_defer_counts(bool) — да ли се екран чишћења прво исцртава, а затим добавља бројеве, један по један. Вратитеfalseда би се сви бројеви израчунали заједно са страницом, као што су издања пре 2.0.1 увек радила. Подразумевано:true.wp_sweep_capability(string$capability, string$context) — потребна способност.$contextје једно одsweep,ajaxилиrest.wp_sweep_total_count(int$count, string$name) — укупан број редова у односу на који се мери проценат чишћења.wp_sweep_count(int$count, string$name) — колико ставки би чишћење уклонило.wp_sweep_details(array$details, string$name) — узорак који приказује „Детаљи“.wp_sweep_sweep(string$message, string$name) — порука која се приказује након извршеног чишћења.
Акције
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.
Заштитите одређене мета кључеве чланака од чишћења:
add_filter( 'wp_sweep_postmeta_whitelist', function ( $meta_keys ) {
$meta_keys[] = '_my_plugin_setting';
$meta_keys[] = '_acme_*';
return $meta_keys;
} );
Изузмите додатну таксономију из чишћења напуштених односа појмова:
add_filter( 'wp_sweep_excluded_taxonomies', function ( $taxonomies ) {
$taxonomies[] = 'product_type';
return $taxonomies;
} );
Снимци екрана



Постављање
- Поставите и укључите додатак. Екран се појављује у
WP-Admin -> Алатке -> WP-Sweep. - Направите резервну копију базе података пре него што било шта очистите. Свако чишћење је неповратно и не може да се поништи.
ЧПП
-
Екран Алатке -> Чишћење има нову адресу
-
И даље је у Алатке, али адреса је промењена са
tools.php?page=wp-sweep/admin.phpнаtools.php?page=wp-sweep. Ажурирајте обележиваче.Стара адреса је била застарели облик „датотека додатка као кратко име изборника“, који је у URL странице стављао назив фасцикле у којој је додатак постављен. Због тога се екран раније кварио свима који су WP-Sweep поставили под другим називом фасцикле — ручно преименованим или распакованим као
wp-sweep-2.0.0. Ништа од тога се сада не дешава. -
Где је нестало „Очисти све“?
-
Сваки ред има поље за потврду, а табела има групну радњу Очисти, тако да означавање поља за потврду у заглављу и примена радње ради оно што је радило „Очисти све“ — и омогућава вам да изоставите оне које не желите.
-
Мој исечак који позива WPSweep::get_instance() је престао да ради
-
Класе су преименоване у 2.0.0:
WPSweepје садаWP_SweepWPSweep_Apiје садаWP_Sweep_APIWPSweep_Commandје садаWP_Sweep_Command
Тако
WPSweep::get_instance()->sweep( 'revisions' )постајеWP_Sweep::get_instance()->sweep( 'revisions' ). Не постоји алијас за усаглашеност, па стари назив изазива кобну грешку уместо да тихо не успе.Сваки филтер и свака акција
wp_sweep_admin_*_sweepзадржавају назив који су имали. -
Које филтере могу да користим да заштитим податке од чишћења?
-
Четири филтера по врсти примају списак мета кључева који никада не смеју да се избришу, и сваки подржава
*као џокер:add_filter( 'wp_sweep_postmeta_whitelist', function ( $keys ) { $keys[] = '_my_plugin_setting'; $keys[] = '_acme_*'; return $keys; } );Исто важи за
wp_sweep_commentmeta_whitelist,wp_sweep_usermeta_whitelistиwp_sweep_termmeta_whitelist. Појмови се штите помоћуwp_sweep_excluded_termids, а таксономије се изузимају из чишћења напуштених односа појмова помоћуwp_sweep_excluded_taxonomies.У 2.0.0 ови спискови штите и чишћења дуплираних мета података, што је документација одувек тврдила, а кôд никада није радио.
-
Заштићени кључ је ипак очишћен или је задржано превише
-
Пре 2.0.0 изузимање је била SQL
LIKEклаузула, аLIKEдоњу црту третира као џокер за један знак. Образац_my_keyје стога подударао иXmy!key, и још много тога. Подударање се сада одвија у PHP-у, па је доња црта само доња црта, а једини џокер је*. Проверите свој списак ако сте се ослањали на старо понашање. -
Да ли WP-Sweep оставља нешто за собом када га избришем?
-
Ништа. WP-Sweep не чува редове могућности, не прави табеле у бази података, не региструје способности и не заказује догађаје.
uninstall.phpсе ипак извршава и чисти за собом у целој мрежи, а не само на првих сто сајтова.
Рецензије
Сарадници и градитељи
„WP-Sweep“ је преведен на 25 језика. Хвала преводиоцима на њиховим доприносима.
Преведите „WP-Sweep“ на свој језик.
Заинтересовани сте за развој?
Прегледајте кôд, погледајте SVN складиште или се претплатите на дневник развоја преко RSS-а.
Дневник измена
2.0.1
- НОВО: Веза за чишћење у реду додатка на екрану „Додаци“, која отвара Алатке -> Чишћење.
- ИСПРАВЉЕНО: Екрану чишћења је истицало време на великим базама података. 2.0.0 је израчунавао сваки број пре исписивања иједног бајта — и тражио укупан број редова сваке табеле једном по реду уместо једном, па се
SELECT COUNT(*)извршавао над postmeta табелом четири пута по учитавању. Екран се сада одмах исцртава и потом добавља бројеве, један по један захтев, тако да ниједан захтев не надживи временско ограничење PHP-а. Без JavaScript-а, веза их израчунава заједно са страницом као што је 2.0.0 увек радио, а нови филтерwp_sweep_defer_countsпотпуно враћа то понашање. - ИСПРАВЉЕНО: Бројање чишћења дуплираних мета података добављало је ИБ-ове сваког дуплираног реда у PHP преко
GROUP_CONCAT, само да би их сабрало. На postmeta табели са милионима дупликата само то је могло да исцрпи захтев. Бројање сада чита само укупне вредности по кључу; ИБ-ови се читају тамо где су потребни, у чишћењу које их брише.
2.0.0
- ИСПРАВЉЕНО: Некоришћени појмови су „некоришћено“ читали из колоне броја, а бројач језгра броји објављене чланке — па је појам који користе само нацрти, чланци на чекању, приватни чланци или чланци у отпаду приказивао број нула и брисан је, заједно са својим односима. Ти чланци су се враћали без ознака и без објашњења зашто. Појам сада мора да буде потпуно невезан
- ИСПРАВЉЕНО: Чишћење појмова таксономије коју више ништа не региструје завршавало се са
DELETE FROM wp_terms WHERE term_id NOT IN ( SELECT term_id FROM wp_term_taxonomy ), што обухвата сваки залутали ред у табели, а не само оне које је чишћење управо учинило напуштеним. Редови које екран није ни пребројао ни навео брисани су заједно са њима. Сада наводи појмове које је учинило напуштеним - ИСПРАВЉЕНО: Напуштени односи појмова су одређивали да ли је ред напуштен тражећи његов
object_idуwp_posts— што поставља право питање само када таксономија припада чланцима. За таксономију регистровану за кориснике или коментаре,object_idје ИБ корисника или коментара, па је сваки однос чији је ИБ случајно премашивао број чланака брисан иако је корисник и даље постојао.link_categoryје ручно изузиман управо из тог разлога; изузимање се сада изводи из тога за шта је свака таксономија регистрована - ИСПРАВЉЕНО: oEmbed чишћење је подударало
%_oembed_%, а у LIKE обрасцу доња црта одговара било ком појединачном знаку — па је значило „било који мета кључ који садржи oembed са по једним знаком са обе стране“, и било је подударање садржи уместо префикса. Кључеви који припадају другим додацима трајно су брисани заједно са кешевима. Вордпрес их уписује као_oembed_{hash}, па је образац сада усидрен на почетку, са обезбеђеним доњим цртама - ИСПРАВЉЕНО: oEmbed чишћење је било једино чишћење мета података које никада није консултовало списак заштићених кључева, па је кључ који је сајт изричито додао у
wp_sweep_postmeta_whitelistипак брисан — списак је чак и читан за њега, а затим занемариван - ИСПРАВЉЕНО: Оптимизовање базе података извршавало је
SHOW TABLESбез префикса, што обухвата све табеле у шеми. На бази података коју дели више инсталација — уобичајен хостинг аранжман — приказ детаља је наводио табеле свих суседа, а чишћење је извршавалоOPTIMIZE TABLEнад инсталацијама којима овај администратор не управља. Сада је ограничено на префикс ове инсталације, узwp_sweep_optimize_tablesза сајт који жели више - НАРУШАВА УСАГЛАШЕНОСТ: Захтева Вордпрес 6.8 и PHP 8.2.
- НАРУШАВА УСАГЛАШЕНОСТ: Екран остаје у Алаткама, али му је адреса промењена са
tools.php?page=wp-sweep/admin.phpнаtools.php?page=wp-sweep. Стари облик је стављао назив фасцикле постављања у URL. - НАРУШАВА УСАГЛАШЕНОСТ: Класе су преименоване
WPSweep->WP_Sweep,WPSweep_Api->WP_Sweep_APIиWPSweep_Command->WP_Sweep_Command. Сваки филтер и акција задржавају свој назив. - НАРУШАВА УСАГЛАШЕНОСТ:
WP_Sweep::$limit_detailsвише не постоји. Прочитајте га помоћуlimit_details()и промените филтеромwp_sweep_limit_details. - НАРУШАВА УСАГЛАШЕНОСТ: Шест акција
wp_sweep_admin_*_sweepпокреће се испод једне табеле чишћења, редоследом који су увек имале, уместо испод шест засебних. - НАРУШАВА УСАГЛАШЕНОСТ: „Очисти све“ више не постоји. Уместо тога означите поље за потврду у заглављу и примените групну радњу
Sweep, која ради исто и омогућава вам да изоставите редове. - НОВО: Групно чишћење. Означите чишћења која желите и покрените их одједном уместо једно по једно.
- НОВО: Чишћења су груписана на екрану. Нефилтрирани приказ ставља свако под наслов са иконицом — Чланак, Коментар, Корисник, Појам, Могућност, База података — а остаје једна табела, па једно групно чишћење и даље покреће све што означите. Ређање по колони уклања наслове уместо да их остави да описују редове које више не групишу.
- НОВО: Групни филтери и колоне које могу да се ређају, из правог
WP_List_Table. - НОВО: Цео екран ради са искљученим JavaScript-ом. Радње у редовима су обичне везе са једнократним кодом, а групна радња је обично слање обрасца.
- НОВО: Спискови дозвољених мета кључева штите и чишћења дуплираних мета података, а не само напуштених, што је readme одувек тврдио, а кôд никада није радио.
- НОВО: Филтери
wp_sweep_capabilityиwp_sweep_limit_details. WP-Sweep нема екран подешавања:wp_sweep_limit_detailsје начин за промену ограничења за „Детаљи“. - НОВО: Свако чишћење има опис онога што уклања, приказан испод назива, а бројеви на које вреди реаговати су наглашени.
- НОВО:
uninstall.phpкоји чисти у целој мрежи, а не само на првих сто сајтова. Сам WP-Sweep не чува ништа: ни редове могућности, ни табеле, ни способности, ни заказане догађаје. - НОВО: Преуређено у
includes/, према Plugin Handbook-у. - НОВО: PHPUnit и vitest скупови тестова и GitHub Actions CI за шест комбинација Вордпреса и PHP-а, за појединачни сајт и мрежу са више сајтова.
- ИЗМЕЊЕНО: Изузимања мета кључева се подударају у PHP-у уместо помоћу SQL
LIKE, па је доња црта у заштићеном кључу доња црта, а не џокер. - ИЗМЕЊЕНО: Сваки позив базе података пролази кроз једну методу и сваки упит је припремљен.
- ИСПРАВЉЕНО: Сачувани XSS на администраторском екрану. Списак „Детаљи“ прављен је спајањем ниски и убациван као HTML, па се име аутора коментара које садржи ознаке извршавало као скрипта у прегледачу администратора.
- ИСПРАВЉЕНО: Додатак више не гради путање на основу назива сопствене фасцикле, па се администраторска скрипта учитава и када је постављен у фасциклу са другим називом од
wp-sweep. - ИСПРАВЉЕНО: Филтрирање
wp_sweep_excluded_termidsна празан низ давало је неважећи SQL, па је број некоришћених појмова остајао празан. - ИСПРАВЉЕНО: Појам је изузиман из чишћења некоришћених појмова кад год се његов ИБ подударао са могућношћу
default_<taxonomy>, чак и ако је та могућност показивала на појам који више не постоји. Вордпрес долази саdefault_link_categoryподешеним на 2, па на већини сајтова појам са ИБ-ом 2 тихо није могао да се очисти. - ИСПРАВЉЕНО: Чишћење без JavaScript-а је брисало податке и ништа не би приказало; резултат се сада приказује.
- ИСПРАВЉЕНО: Петља за уклањање у мрежи са више сајтова заустављала се на 100 сајтова, учитавала целе објекте сајтова да би прочитала једну колону и остављала стек пребацивања неодмотан за један.
- ИСПРАВЉЕНО: Параметри захтева се чисте и проверавају према сопственом списку чишћења додатка.
- ИСПРАВЉЕНО: Две поруке „Sweep Complete“ које исписује
wp sweepбиле су једине ниске у додатку које никада нису прослеђене функцијама за превођење
