web-dev-qa-db-fra.com

Est-il possible d'exécuter du code de plugin lorsqu'un blog multisite est supprimé?

J'ai un plugin qui crée des tables lorsqu'il est activé ou lorsqu'un nouveau blog est ajouté à un réseau. Lorsqu'un blog est supprimé, j'aimerais pouvoir supprimer ces tables pour ce blog. Y a-t-il un crochet disponible pour cela?

J'imagine que ce serait quelque chose de similaire à wpmu_new_blog, mais je ne trouve pas d'équivalent pour la suppression.

3
Dave Carlile

La fonction wpmu_delete_blog dans /wp-admin/includes/ms.php a un crochet d'action appelé delete_blog. Ce hook transmet la variable $blog_id

Vous pouvez essayer de vous connecter à ce crochet, bien qu'il soit exécuté au tout début de la fonction.

1
nothingtosee

C’est sans doute la meilleure façon de le faire si vous ne supprimez que des tableaux, mais la réponse de de nonetosee est également valide et serait la manière requise si besoin de faire autre chose que l’abaissement des tables.

add_filter("wpmu_drop_tables", "DropTablesForBlog");


function DropTablesForBlog($tables)
{
  global $wpdb;

  $tables[] = $wpdb->prefix . "my_plugin_table_1";
  $tables[] = $wpdb->prefix . "my_plugin_table_2";
  $tables[] = $wpdb->prefix . "my_plugin_table_2";

  return $tables;
}
3
Dave Carlile