diff --git src/wp-includes/category-template.php src/wp-includes/category-template.php
index 0169145..ec40e6c 100644
--- src/wp-includes/category-template.php
+++ src/wp-includes/category-template.php
@@ -402,6 +402,14 @@ function wp_dropdown_categories( $args = '' ) {
 			$output .= "\t<option value='" . esc_attr( $option_none_value ) . "'$selected>$show_option_none</option>\n";
 		}
 
+		if ( $r['selected'] ) {
+			// Check if the 'selected' term was split
+			$selected_term = get_term( $r['selected'], $r['taxonomy'] );
+			if ( $selected_term && ! is_wp_error( $selected_term ) && intval( $r['selected'] ) != $selected_term->term_id ) {
+				$r['selected'] = $selected_term->term_id;
+			}
+		}
+
 		if ( $r['hierarchical'] ) {
 			$depth = $r['depth'];  // Walk the full depth.
 		} else {
diff --git src/wp-includes/taxonomy.php src/wp-includes/taxonomy.php
index 012c020..8ccc847 100644
--- src/wp-includes/taxonomy.php
+++ src/wp-includes/taxonomy.php
@@ -1233,7 +1233,17 @@ class WP_Tax_Query {
 				" );
 				break;
 			default:
-				$terms = implode( ',', array_map( 'intval', $query['terms'] ) );
+				$terms = $query['terms'];
+
+				// If any passed term_ids were previously split, substitute the correct term_id.
+				foreach ( $terms as $term_index => $term_id ) {
+					if ( $split_term = wp_get_split_term( $term_id, $query['taxonomy'] ) ) {
+						$terms[ $term_index ] = $split_term;
+					}
+				}
+
+				$terms = implode( ',', array_map( 'intval', $terms ) );
+
 				$terms = $wpdb->get_col( "
 					SELECT $resulting_field
 					FROM $wpdb->term_taxonomy
@@ -1315,6 +1325,12 @@ function get_term($term, $taxonomy, $output = OBJECT, $filter = 'raw') {
 			return null;
 		if ( ! $_term = wp_cache_get( $term, $taxonomy . ':terms:' . $incrementor ) ) {
 			$_term = $wpdb->get_row( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND t.term_id = %d LIMIT 1", $taxonomy, $term) );
+
+			// If no term is found, check whether this was a previously split term.
+			if ( ! $_term && $old_term_id = wp_get_split_term( $term, $taxonomy ) ) {
+				return get_term( $old_term_id, $taxonomy, $output, $filter );
+			}
+
 			if ( ! $_term )
 				return null;
 			wp_cache_add( $term, $_term, $taxonomy . ':terms:' . $incrementor );
@@ -1675,6 +1691,35 @@ function get_terms( $taxonomies, $args = '' ) {
 	 */
 	$args = apply_filters( 'get_terms_args', $args, $taxonomies );
 
+	/*
+	 * For parameters that accept term_ids, check to see whether any of the IDs passed to the parameter correspond
+	 * to previously split taxonomy terms. If so, swap out the old term_id for the new one, so the query matches.
+	 */
+	$term_id_params = array( 'exclude', 'exclude_tree', 'include', 'parent', 'child_of' );
+	foreach ( $term_id_params as $term_id_param ) {
+		if ( empty( $args[ $term_id_param ] ) ) {
+			continue;
+		}
+
+		$param_is_array = is_array( $args[ $term_id_param ] );
+
+		$passed_term_ids = (array) $args[ $term_id_param ];
+		foreach ( $passed_term_ids as $passed_term_index => $passed_term_id ) {
+			foreach ( $taxonomies as $taxonomy ) {
+				if ( $split_term = wp_get_split_term( $passed_term_id, $taxonomy ) ) {
+					$passed_term_ids[ $passed_term_index ] = $split_term;
+					continue 2;
+				}
+			}
+		}
+
+		if ( $param_is_array ) {
+			$args[ $term_id_param ] = $passed_term_ids;
+		} else {
+			$args[ $term_id_param ] = $passed_term_ids[0];
+		}
+	}
+
 	$child_of = $args['child_of'];
 	if ( $child_of ) {
 		$hierarchy = _get_term_hierarchy( reset( $taxonomies ) );
@@ -3903,6 +3948,23 @@ function _get_term_children($term_id, $terms, $taxonomy) {
 }
 
 /**
+ * Look up a previously split taxonomy term by its old term_id.
+ *
+ * Terms that have been split by _split_shared_term() are stored, so that
+ * attempts to retrieve terms by the previous term_id still work.
+ *
+ * @since 4.1.0
+ *
+ * @param int    $old_term_id Old, pre-split term_id.
+ * @param string $taxonomy    Taxonomy name.
+ */
+function wp_get_split_term( $old_term_id, $taxonomy ) {
+	$split_terms = get_option( '_split_terms_' . $taxonomy );
+
+	return ! empty( $split_terms[ $old_term_id ] ) ? $split_terms[ $old_term_id ] : null;
+}
+
+/**
  * Add count of children to parent count.
  *
  * Recalculates term counts by including items from child terms. Assumes all
diff --git tests/phpunit/tests/term/splitSharedTerm.php tests/phpunit/tests/term/splitSharedTerm.php
index 901ab14..994d341 100644
--- tests/phpunit/tests/term/splitSharedTerm.php
+++ tests/phpunit/tests/term/splitSharedTerm.php
@@ -125,6 +125,82 @@ class Tests_Term_SplitSharedTerm extends WP_UnitTestCase {
 	/**
 	 * @ticket 30335
 	 */
+	public function test_should_remain_available_at_old_term_id_using_get_term_by() {
+		$t2_term = get_term_by( 'term_taxonomy_id', $this->terms['t2']['term_taxonomy_id'], 'wptests_tax_2' );
+
+		$this->assertEquals( $t2_term, get_term_by( 'id', $this->terms['t1']['term_id'], 'wptests_tax_2' ) );
+	}
+
+	/**
+	 * @ticket 30335
+	 */
+	public function test_should_remain_available_at_old_term_id_using_get_term() {
+		$t2_term = get_term_by( 'term_taxonomy_id', $this->terms['t2']['term_taxonomy_id'], 'wptests_tax_2' );
+
+		$this->assertEquals( $t2_term, get_term( intval( $this->terms['t1']['term_id'] ), 'wptests_tax_2' ) );
+	}
+
+	/**
+	 * @ticket 30335
+	 */
+	public function test_should_remain_available_at_old_term_id_using_get_terms_with_parent_param() {
+		$found = get_terms( 'wptests_tax_2', array(
+			'parent' => $this->terms['t1']['term_id'],
+			'hide_empty' => false,
+		) );
+		$this->assertEquals( $this->terms['t2_child']['term_id'], $found[0]->term_id );
+	}
+
+	/**
+	 * @ticket 30335
+	 */
+	public function test_should_remain_available_at_old_term_id_using_get_terms_with_include_param() {
+		$t2_term = get_term_by( 'term_taxonomy_id', $this->terms['t2']['term_taxonomy_id'], 'wptests_tax_2' );
+
+		$found = get_terms( 'wptests_tax_2', array(
+			'include' => array( $this->terms['t1']['term_id'] ),
+			'hide_empty' => false,
+		) );
+		$this->assertEquals( $t2_term->term_id, $found[0]->term_id );
+	}
+
+	/**
+	 * @ticket 30335
+	 */
+	public function test_should_remain_available_at_old_term_id_using_tax_query() {
+		$t2_term = get_term_by( 'term_taxonomy_id', $this->terms['t2']['term_taxonomy_id'], 'wptests_tax_2' );
+
+		$tq = new WP_Tax_Query( array(
+			array(
+				'field' => 'term_id',
+				'taxonomy' => 'wptests_tax_2',
+				'terms' => array( $this->terms['t1']['term_id'] ),
+			),
+		) );
+		$tq->transform_query( $tq->queries[0], 'term_taxonomy_id' );
+
+		$this->assertEquals( array( $t2_term->term_taxonomy_id ), $tq->queries[0]['terms'] );
+	}
+
+	/**
+	 * @ticket 30335
+	 */
+	public function test_should_remain_available_at_old_term_id_using_wp_dropdown_categories() {
+		$t2_term = get_term_by( 'term_taxonomy_id', $this->terms['t2']['term_taxonomy_id'], 'wptests_tax_2' );
+		$terms = get_terms( 'wptests_tax_2', array( 'hide_empty' => false ) );
+		$dropdown = wp_dropdown_categories( array(
+			'echo'       => false,
+			'taxonomy'   => 'wptests_tax_2',
+			'hide_empty' => false,
+			'selected'   => $this->terms['t1']['term_id'],
+		) );
+
+		$this->assertRegExp( "/<option[^>]+value=\"{$t2_term->term_id}\" selected=\"selected\">/", $dropdown );
+	}
+
+	/**
+	 * @ticket 30335
+	 */
 	public function test_should_update_default_category_on_term_split() {
 		global $wpdb;
 		$t1 = wp_insert_term( 'Foo Default', 'category' );
