Программное удаление всех терминов таксономии из словаря

Для удаления всех терминов из определенного словаря в Drupal 7 недостаточно просто удалить все записи из таблицы taxonomy_term_data с условием по vid нужного словаря. После простого удаления из этой таблицы останутся данные о связях терминов с нодами в денормализованной таблице taxonomy_index и все родительские связи терминов в таблице taxonomy_term_hierarchy. Также термины, связанные с нодами taxonomy term reference полем, останутся в таблицах данных полей. Кроме этого у терминов могут быть и свои поля, которые также хранятся в отдельных таблицах. Для полного удаления отдельного термина в Drupal API имеется функция taxonomy_term_delete($tid). Для удаления всех терминов из словаря, нужно написать функцию, которая будет получать массив всех терминов словаря и в цикле их удалять.


function delete_vocab_terms($vid) {
  $terms = taxonomy_get_tree((int) $vid);
  foreach ($terms as $term) {
    taxonomy_term_delete($term->tid);
  }
}

Затем просто нужно вызвать созданную функцию и передать ей аргументом vid словаря. К примеру, для словаря с vid равным 1 вызываем delete_vocab_terms(1).