If you want your module to create a custom vocabulary, implement hook_install()
and hook_uninstall()
in your mymodule.install file. The vocabularies will be created and deleted on install/uninstall of the module.
Implement hook_install() and hook_uninstall()
/** * Implements hook_install(). */ function mymodule_install() { // Create vocabularies. foreach(_mymodule_get_vocabularies() as $vocabulary) { // Convert to object. $vocabulary = (object) $vocabulary; // Save the vocabulary. taxonomy_vocabulary_save($vocabulary); // Store the vid so we can delete the vocabulary later. // Storing the vid is also useful for when we want to programmatically insert terms. variable_set($vocabulary->machine_name . '_vid', $vocabulary->vid); } } /** * Implements hook_uninstall(). */ function mymodule_uninstall() { // Delete vocabularies. foreach(_mymodule_get_vocabularies() as $vocabulary) { // Convert to object. $vocabulary = (object) $vocabulary; // Get the stored vid. $vid = variable_get($vocabulary->machine_name . '_vid'); // Delete from database. taxonomy_vocabulary_delete($vid); // Delete the variable. variable_del($vocabulary->machine_name . '_vid'); } } /** * Gets the list of vocabularies defined. * @return */ function _mymodule_get_vocabularies() { return array( array( 'name' => t('My New Vocabulary'), 'machine_name' => 'my_new_vocabulary' ), ); }
Add a Term to a Vocabulary
Now that you have your vocabulary defined, here’s how to programmatically add terms to a vocabulary.
Nice article, thank you for sharing.
taxonomy_vocabulary_delete() needs a vocabulary id (vid) as parameter. I think you forgot this in your code example. Issue is found on line #28.
Thanks for pointing that out Eric!