Správný plugin si po sobě vždy uklidí
Uživatelé WordPressu zpravidla vědí, že veškeré nastavení jejich blogu včetně nastavení nainstalovaných pluginů se ukládá do MySQL databáze. Nicméně většina z nich žije v mylné představě, že po odinstalaci (= smazání) pluginu se pluginem vytvořená data automaticky odstraní. Takhle to však v reálu nefunguje, čehož si můžou všimnout všichni, kteří se alespoň občas hrabou ve své databázi.
Pokud si dobře pamatuji, dosud jsem nenarazil na jediný plugin, který by své nastavení po smazání sám odstranil. A už jsem jich prošel celou řadu (včetně mnoha dalších, které ve zdejších seznamech nejsou uvedeny). Nevím, jak často instalujete nové pluginy vy, ale já každou chvíli zkouším nějaký nový; a při každé takové instalaci vzniká další a další bordel v databázi. Je sice pravda, že objem těchto dat není nijak velký, ale já mám rád čistotu, takže i těch pár kilobajtů navíc mně vadí.
Ti, kteří špínu v databázi jako já nemají rádi, mají dvě možnosti, jak se přebytečných dat zbavit. Nejrychlejší způsob je asi použití nějakého specializovaného nástroje (např. Clean Options), který nepoužívané nastavení automaticky smaže. Ale ne vždy pluginy ukládají data pouze do tabulky wp_options. Některé z nich si vytvářejí vlastní tabulky (jako můj plugin Spammer Blocker), nebo data dokonce cpou do jiných tabulek WordPressu, kde se to pak hledá obtížně. Dalším způsobem je manuální odstranění zbývajících dat, které se obyčejně provádí po provedení předchozího kroku.
Každý vývojář by tedy měl své pluginy naučit odstraňovat uložené nastavení z databáze. WordPress od verze 2.7 na to má dvě metody – spuštění funkce register_uninstall_hook() nebo souboru uninstall.php. Asi nejjednodušší je právě použití onoho souboru. Do něj vložte všechny odinstalační procedury.
Pro představu vám může posloužit následující zdroják použitý v pluginu Spammer Blocker:
1 2 3 4 5 6 7 8 9 | prefix . "sb_ip_log"; delete_option("sb_plugin_version"); delete_option("sb_detection_of_spammers_cookies"); delete_option("sb_detection_of_spammers_time"); delete_option("sb_banned_message"); $wpdb->query("DROP TABLE $sb_ip_log"); } ?> |
Jak vidíte, soubor po spuštění odstraní uložené volby z databáze a smaže tabulku. Nezapomeňte na podmínku ověřující přítomnost konstanty WP_UNINSTALL_PLUGIN (podrobnosti v Kodexu).
V dalším článku si ukážeme pár tipů na vylepšení pluginů.


Já používám plugin Garbage Collector, který zobrazí všechny vytvořené záznamy od pluginů, které buď nepoužíváš, nebo od pluginů již smazaných. Můžeš si pak vybrat, který ponecháš a který smažeš. V každé tabulce ještě zobrazí počet záznamů.
#1 | Reagovat