**SOLUTION - Updated: 03/03/2015** - Thanks to /u/G.M. The below adds a new field to the Term Edit Page and saves the value into the un-used ( for the moment anyway ) `term_group` field which can then be used to order terms. In the below hooks ( actions ) you'll need to replace `TAXONOMY_SLUG` with your actual taxonomy slug. /** * Append Fields To Term Edit Page * @param Term Object $term * @param string $taxonomy */ function term_order_field( $term, $taxonomy ) { ?> <tr class="form-field"> <th scope="row" valign="top"> <label for="meta-order"><?php _e( 'Category Order' ); ?></label> </th> <td> <input type="text" name="_term_order" size="3" style="width:5%;" value="<?php echo ( ! empty( $term->term_group ) ) ? $term->term_group : '0'; ?>" /> <span class="description"><?php _e( 'Categories are ordered Smallest to Largest' ); ?></span> </td> </tr> <?php } add_action( 'TAXONOMY_SLUG_edit_form_fields', 'term_order_field', 10, 2 ); /** * Save Term Order * @param int $term_id */ function save_term_order( $term_id ) { global $wpdb; if( isset( $_POST['_term_order'] ) ) { $wpdb->update( $wpdb->terms, array( 'term_group' => $_POST['_term_order'] ), array( 'term_id' => $term_id ) ); } } // END Function add_action( 'edited_TAXONOMY_SLUG', 'save_term_order' ); **Add Term Order cell to Term List** /** * Add Column To Show 'Term Order' Field * @param array $columns * @return array $columns */ function term_order_header( $columns ) { $columns['order'] = '<center>Order</center>'; return $columns; } add_filter( 'manage_edit-TAXONOMY_SLUG_columns', 'term_order_header' ); /** * Give 'Term Order' Column A Value `term_group` * @param string $empty * @param string $col_name * @param int $term_id * @return string */ function term_order_header_val( $empty = '', $col_name, $term_id ) { if( isset( $_GET['taxonomy'] ) && 'order' == $col_name ) { $term = get_term( $term_id, $_GET['taxonomy'] ); return "<center>{$term->term_group}</center>"; } else { return '0'; } } add_filter( 'manage_TAXONOMY_SLUG_custom_column', 'term_order_header_val', 10, 3 ); **Hook Documentation** - [action `{$taxonomy}_edit_form_fields`](https://developer.wordpress.org/reference/hooks/taxonomy_edit_form_fields/) - [action `edited_{$taxonomy}`](https://developer.wordpress.org/reference/hooks/edited_taxonomy/) - [filter `manage_{$screen->id}_columns`](https://developer.wordpress.org/reference/hooks/manage_screen-id_columns/) - [filter `manage_{$this->screen->taxonomy}_custom_column`](https://developer.wordpress.org/reference/hooks/manage_this-screen-taxonomy_custom_column/) --- Below is an out-dated solution that works better if you have multiple Term Meta Values you would like to save. If you only need to save Term Order, the above solution is best. /** Add New Field To Category **/ function extra_category_fields( $tag ) { $t_id = $tag->term_id; $cat_meta = get_option( "category_$t_id" ); ?> <tr class="form-field"> <th scope="row" valign="top"><label for="meta-order"><?php _e('Category Order'); ?></label></th> <td> <div id="catOrder"> <input type="text" name="cat_meta[order]" size="3" style="width:5%;" value="<?php echo (isset($cat_meta['order'])) ? $cat_meta['order'] : '0'; ?>" /> </div> <span class="description"><?php _e('Categories are ordered Smallest to Largest'); ?></span> </td> </tr> <?php } add_action('protax_edit_form_fields','extra_category_fields'); /** Save Category Meta **/ function save_extra_category_fileds( $term_id ) { global $wpdb; if ( isset( $_POST['cat_meta'] ) ) { $t_id = $term_id; $cat_meta = get_option( "category_$t_id"); $cat_keys = array_keys($_POST['cat_meta']); foreach ($cat_keys as $key){ if (isset($_POST['cat_meta'][$key])){ $cat_meta[$key] = $_POST['cat_meta'][$key]; } } update_option( "category_$t_id", $cat_meta ); $wpdb->update($wpdb->terms, array('term_group' => $cat_meta['order']), array('term_id'=>$term_id)); } } add_action ( 'edited_protax', 'save_extra_category_fileds'); Calling it: $procats = get_categories(array('taxonomy' => 'protax', 'hide_empty' => 0, 'orderby' => 'term_group')); **Edit** - You're also able to order them in the admin panel by using this filter: function change_term_order( $orderby, $args, $taxonomies ) { if ( is_admin() && 'protax' !== $taxonomies[0] ) return $orderby; $orderby = 'term_group'; $args['order'] = 'ASC'; return $orderby; } add_filter( 'get_terms_orderby', 'change_term_order', 10, 3 ); **Edit** — The function change_term_order should return $orderby, not the $args array