diff --git a/draggableviews.info b/draggableviews.info
index 2b8980d..6f6535d 100644
--- a/draggableviews.info
+++ b/draggableviews.info
@@ -15,5 +15,6 @@ files[] = test/draggableviews.test
 files[] = handlers/draggableviews_handler_native.inc
 files[] = handlers/draggableviews_handler_fieldapi.inc
 files[] = handlers/draggableviews_hierarchy_handler_native.inc
+files[] = handlers/draggableviews_handler_taxonomy_term.inc
 
 dependencies[] = entity
diff --git a/handlers/draggableviews_handler_taxonomy_term.inc b/handlers/draggableviews_handler_taxonomy_term.inc
new file mode 100644
index 0000000..be15b4a
--- /dev/null
+++ b/handlers/draggableviews_handler_taxonomy_term.inc
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * @file
+ * The taxonomy term weight handler plugin.
+ */
+
+$plugin = array(
+  'label' => 'Taxonomy term',
+  'handler' => array(
+    'class' => 'draggableviews_handler_taxonomy_term',
+  ),
+);
+
+class draggableviews_handler_taxonomy_term extends draggableviews_handler {
+
+  public function get($field, $index) {
+    $row = $field->view->result[$index];
+    return $row->taxonomy_term_data_weight;
+  }
+
+  function set($form_state) {
+    $fv = $form_state['values'];
+    foreach ($fv['draggableviews'] as $item) {
+      // Make sure id is available.
+
+      if (!isset($item['id'])) {
+        continue;
+      }
+
+      $term = taxonomy_term_load($item['id']);
+      if ($term->weight != $item['weight']) {
+        $term->weight = $item['weight'];
+        taxonomy_term_save($term);
+      }
+    }
+  }
+}
+
