diff --git a/core/modules/forum/forum.module b/core/modules/forum/forum.module
index f419b7bad2df318932a7b9c9d7fb3468b00c8724..4c12c41f8cf4dc1bfb2224094b9879c3544a4e56 100644
--- a/core/modules/forum/forum.module
+++ b/core/modules/forum/forum.module
@@ -575,37 +575,29 @@ function forum_field_storage_pre_update($entity_type, $entity, &$skip_fields) {
 }
 
 /**
- * Implements hook_form_FORM_ID_alter() for taxonomy_form_vocabulary().
+ * Implements hook_form_alter().
  */
-function forum_form_taxonomy_form_vocabulary_alter(&$form, &$form_state, $form_id) {
-  $vid = variable_get('forum_nav_vocabulary', 0);
-  if (isset($form['vid']['#value']) && $form['vid']['#value'] == $vid) {
-    $form['help_forum_vocab'] = array(
-      '#markup' => t('This is the designated forum vocabulary. Some of the normal vocabulary options have been removed.'),
-      '#weight' => -1,
-    );
-    // Forum's vocabulary always has single hierarchy. Forums and containers
-    // have only one parent or no parent for root items. By default this value
-    // is 0.
-    $form['hierarchy']['#value'] = TAXONOMY_HIERARCHY_SINGLE;
-    // Do not allow to delete forum's vocabulary.
-    $form['actions']['delete']['#access'] = FALSE;
-  }
-}
-
-/**
- * Implements hook_form_FORM_ID_alter() for taxonomy_form_term().
- */
-function forum_form_taxonomy_form_term_alter(&$form, &$form_state, $form_id) {
+function forum_form_alter(&$form, $form_state, $form_id) {
   $vid = variable_get('forum_nav_vocabulary', 0);
   if (isset($form['vid']['#value']) && $form['vid']['#value'] == $vid) {
+    // Hide critical options from forum vocabulary.
+    if ($form_id == 'taxonomy_form_vocabulary') {
+      $form['help_forum_vocab'] = array(
+        '#markup' => t('This is the designated forum vocabulary. Some of the normal vocabulary options have been removed.'),
+        '#weight' => -1,
+      );
+      $form['hierarchy'] = array('#type' => 'value', '#value' => 1);
+      $form['delete']['#access'] = FALSE;
+    }
     // Hide multiple parents select from forum terms.
-    $form['relations']['parent']['#access'] = FALSE;
+    elseif ($form_id == 'taxonomy_form_term') {
+      $form['advanced']['parent']['#access'] = FALSE;
+    }
   }
 }
 
 /**
- * Implements hook_form_BASE_FORM_ID_alter() for node_form().
+ * Implements hook_form_BASE_FORM_ID_alter().
  */
 function forum_form_node_form_alter(&$form, &$form_state, $form_id) {
   if (isset($form['taxonomy_forums'])) {
diff --git a/core/modules/forum/forum.test b/core/modules/forum/forum.test
index dad2006d50674347f5cc231f859267ee564546f2..b5b8ae4995a4040dde095c71da7860b4e235f4cb 100644
--- a/core/modules/forum/forum.test
+++ b/core/modules/forum/forum.test
@@ -246,26 +246,6 @@ class ForumTestCase extends DrupalWebTestCase {
     $this->deleteForum($this->delete_forum['tid']);
     // Create forum at the top (root) level.
     $this->root_forum = $this->createForum('forum');
-
-    // Test vocabulary form alterations.
-    $this->drupalGet('admin/structure/taxonomy/forums/edit');
-    $this->assertFieldByName('op', t('Save'), 'Save button found.');
-    $this->assertNoFieldByName('op', t('Delete'), 'Delete button not found.');
-    // Test tags vocabulary form is not affected.
-    $this->drupalGet('admin/structure/taxonomy/tags/edit');
-    $this->assertFieldByName('op', t('Save'), 'Save button found.');
-    $this->assertFieldByName('op', t('Delete'), 'Delete button found.');
-
-    // Test term edit form alterations.
-    $this->drupalGet('taxonomy/term/' . $this->container['tid'] . '/edit');
-    // Test parent field been hidden by forum module.
-    $this->assertNoField('parent[]', 'Parent field not found.');
-    // Test tags vocabulary term form is not affected.
-    $this->drupalGet('admin/structure/taxonomy/tags/add');
-    $this->assertField('parent[]', 'Parent field found.');
-    // Test relations fieldset exists.
-    $relations_fieldset = $this->xpath("//fieldset[@id='edit-relations']");
-    $this->assertTrue(isset($relations_fieldset[0]), 'Relations fieldset element found.');
   }
 
   /**