2012-01-15 55 views
0

當博客被刪除時,還有一種方法可以刪除插件數據庫表嗎?正如我所觀察到的,只有默認的WordPress數據庫表被刪除,但不是插件生成的表。-WP Multisite-如何在刪除博客時刪除插件數據庫表?

請幫忙。

+0

你的插件應該有一個選項來刪除它的設置,當您卸載/停用......然而很多插件都寫得不好,沒有這個選項。手動刪除表格的唯一選擇 – 2012-01-15 23:10:56

回答

0

我想你必須爲此編寫一個自定義插件。在刪除網站過程中,您可以掛接許多操作和過濾器。一個特別你應該看看是:

wp-admin/includes/ms.php Line 86: 
$drop_tables = apply_filters('wpmu_drop_tables', $wpdb->tables('blog')); 

所以在你的自定義插件,直接解決麻煩的插件表。添加類似,

function remove_plugin_xyz_tables($tables) { 
    global $wpdb; 
    $id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : 0; 
    $tables[] = $wpdb->get_blog_prefix($id).'table_xyz'; 
    return $tables; 
} 
add_filter('wpmu_drop_tables', 'remove_plugin_xyz_tables'); 

一些注意事項:我不知道WordPress會如何處理這種情況,如果表不存在,所以你要測試這一點,你可能要首先查看如果它存在和/或插件處於活動狀態和/或檢查它是否已經在數組中。這也需要你爲每個麻煩的插件添加一行,並假定插件已正確地爲它的表格添加了前綴。另一種方法是'SHOW TABLES LIKE "'.$wpdb->get_blog_prefix($id).'%"並將您的結果與WP已知的內容合併。最後,我沒有測試任何這個,所以這段代碼僅僅是指出你爲自己開發一個堅實的解決方案的正確方向。

無論如何,一旦你的插件完成,網絡激活它,它應該照顧所有骯髒的工作,當你的網站被刪除!

哦,是的,並提醒插件作者的問題。有可能他/她不使用WPMS,甚至不知道這是一個問題。如果您有辦法做到這一點,則編碼補丁並將其提交給該人員以保存其工作。開源FTW。

祝你好運〜