2012-01-15 13 views
0

ブログが削除されたときにプラグインデータベーステーブルを削除する方法はありますか?私が観察したように、デフォルトのwordpressデータベーステーブルだけが削除されますが、プラグイン生成テーブルは削除されません。-WP Multisite-ブログを削除したときにもプラグインデータベーステーブルを削除する方法

助けてください。

+0

あなたが...それを有効化/無効がプラグインの多くは下手に書かれているアンインストールし、このオプションを持っていないとき、あなたのプラグインがその設定を削除するオプションが用意されていなければなりません。手動でテーブルを削除する唯一の選択肢 –

答えて

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'); 

いくつかの注意点、のようなものを追加します。プラグインがアクティブであるかどうか、および/またはプラグインがすでに配列内にあるかどうかを確認します。これはまた、問題のあるプラグインごとに行を追加する必要があり、プラグインがテーブルの前に適切に置かれていることを前提としています。代わりに'SHOW TABLES LIKE "'.$wpdb->get_blog_prefix($id).'%"になり、WPがすでに知っているものとあなたの結果をマージするでしょう。最後に、私はこれをテストしませんでしたので、このコードはあなた自身のために固いソリューションを開発する正しい方向に向けることに過ぎません。

とにかく、プラグインが完了したら、ネットワークをアクティブにして、サイトが削除されたときにあなたのために汚い仕事をすべて処理する必要があります!

ああ、そう、問題のプラグイン作者に警告してください。 WPMSを使用していない可能性もあり、これが問題であることに気づいていない可能性もあります。そうする手段があれば、パッチを作成し、その人に提出して作業を保存してください。オープンソースのFTW。

運のベスト〜

関連する問題