Cancellare Un'intera Tassonomia dal Database

Per assolvere ad un'operazione come questa, non c'è nessuna funzione in WordPress pensata allo scopo. D'altronde, cancellare tutti i dati associati ad una tassonomia non è un'operazione comune, o al meno non un'azione di routine. Io, per esempio, mi sono trovato dinanzi il problema mentre scrivevo lo script uninstall.php per SiteTree Pro 4.0 — un file caricato quando non sono neanche disponibili tutte le funzioni di WordPress, oltretutto. Ma pur considerando un contesto più generico, la soluzione più agevole che può essere adottata è quella di usare tre query personalizzate:

global $wpdb;

$taxonomy_name = 'the_taxonomy_to_delete';

# Cancella tutti i termini associati alla tassonomia.
#
# La query interna colleziona tutti gli ID dei termini
# da cancellare dalla tabella 'term_taxonomy'.
$wpdb->query( 
    "DELETE FROM {$wpdb->terms} AS t 
     WHERE t.term_id IN (
        SELECT tt.term_id FROM {$wpdb->term_taxonomy} AS tt
        WHERE tt.taxonomy = '{$taxonomy_name}'
     )"
);

# Cancella le informazioni usate da WordPress per collegare ogni
# post ai propri termini.
#
# Anche qui è necessario usare una query nidificata, e la tabella
# 'term_taxonomy' è ancora una volta la sorgente dei dati passati
# alla query esterna. Anche se in questo caso ad essere collezionati
# dalla query interna sono gli ID delle Relazioni da cancellare.
$wpdb->query( 
    "DELETE FROM {$wpdb->term_relationships} AS tr 
     WHERE tr.term_taxonomy_id IN (
        SELECT tt.term_taxonomy_id FROM {$wpdb->term_taxonomy} AS tt
        WHERE tt.taxonomy = '{$taxonomy_name}'
     )"
);

# Cancella le informazioni di base riguardanti la tassonomia.
$wpdb->query( 
    "DELETE FROM {$wpdb->term_taxonomy} 
     WHERE taxonomy = '{$taxonomy_name}'"
 );

Il database deve essere interrogato in tre momenti distinti non solo perché tre sono le tabelle da cui cancellare i dati, ma soprattutto perché due di queste, terms e term_relationships, dipendono dalla terza, term_taxonomy.