diff --git src/wp-includes/taxonomy.php src/wp-includes/taxonomy.php
index beb536b..bf83600 100644
--- src/wp-includes/taxonomy.php
+++ src/wp-includes/taxonomy.php
@@ -1679,6 +1679,10 @@ function get_terms( $taxonomies, $args = '' ) {
 		'number' => '', 'fields' => 'all', 'name' => '', 'slug' => '', 'parent' => '', 'childless' => false,
 		'hierarchical' => true, 'child_of' => 0, 'get' => '', 'name__like' => '', 'description__like' => '',
 		'pad_counts' => false, 'offset' => '', 'search' => '', 'cache_domain' => 'core' );
+
+	// Keep a pristine copy of `$args` to pass to filters.
+	$_args = $args;
+
 	$args = wp_parse_args( $args, $defaults );
 	$args['number'] = absint( $args['number'] );
 	$args['offset'] = absint( $args['offset'] );
@@ -1716,8 +1720,9 @@ function get_terms( $taxonomies, $args = '' ) {
 	 *
 	 * @param array $args       An array of get_term() arguments.
 	 * @param array $taxonomies An array of taxonomies.
+	 * @param array $_args      Array of `get_terms()` arguments, as passed to the function.
 	 */
-	$args = apply_filters( 'get_terms_args', $args, $taxonomies );
+	$args = apply_filters( 'get_terms_args', $args, $taxonomies, $_args );
 
 	// Avoid the query if the queried parent/child_of term has no descendants.
 	$child_of = $args['child_of'];
@@ -1766,8 +1771,9 @@ function get_terms( $taxonomies, $args = '' ) {
 		 * @param array $cache      Cached array of terms for the given taxonomy.
 		 * @param array $taxonomies An array of taxonomies.
 		 * @param array $args       An array of get_terms() arguments.
+		 * @param array $_args      Array of `get_terms()` arguments, as passed to the function.
 		 */
-		return apply_filters( 'get_terms', $cache, $taxonomies, $args );
+		return apply_filters( 'get_terms', $cache, $taxonomies, $args, $_args );
 	}
 
 	$_orderby = strtolower( $args['orderby'] );
@@ -1800,8 +1806,9 @@ function get_terms( $taxonomies, $args = '' ) {
 	 * @param string $orderby    `ORDERBY` clause of the terms query.
 	 * @param array  $args       An array of terms query arguments.
 	 * @param array  $taxonomies An array of taxonomies.
+	 * @param array  $_args      Array of `get_terms()` arguments, as passed to the function.
 	 */
-	$orderby = apply_filters( 'get_terms_orderby', $orderby, $args, $taxonomies );
+	$orderby = apply_filters( 'get_terms_orderby', $orderby, $args, $taxonomies, $_args );
 
 	$order = strtoupper( $args['order'] );
 	if ( ! empty( $orderby ) ) {
@@ -1872,8 +1879,9 @@ function get_terms( $taxonomies, $args = '' ) {
 	 * @param string $exclusions `NOT IN` clause of the terms query.
 	 * @param array  $args       An array of terms query arguments.
 	 * @param array  $taxonomies An array of taxonomies.
+	 * @param array  $_args      Array of `get_terms()` arguments, as passed to the function.
 	 */
-	$exclusions = apply_filters( 'list_terms_exclusions', $exclusions, $args, $taxonomies );
+	$exclusions = apply_filters( 'list_terms_exclusions', $exclusions, $args, $taxonomies, $_args );
 
 	if ( ! empty( $exclusions ) ) {
 		$where .= $exclusions;
@@ -1980,8 +1988,9 @@ function get_terms( $taxonomies, $args = '' ) {
 	 * @param array $selects    An array of fields to select for the terms query.
 	 * @param array $args       An array of term query arguments.
 	 * @param array $taxonomies An array of taxonomies.
+	 * @param array $_args      Array of `get_terms()` arguments, as passed to the function.
 	 */
-	$fields = implode( ', ', apply_filters( 'get_terms_fields', $selects, $args, $taxonomies ) );
+	$fields = implode( ', ', apply_filters( 'get_terms_fields', $selects, $args, $taxonomies, $_args ) );
 
 	$join = "INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id";
 
@@ -1995,8 +2004,9 @@ function get_terms( $taxonomies, $args = '' ) {
 	 * @param array $pieces     Terms query SQL clauses.
 	 * @param array $taxonomies An array of taxonomies.
 	 * @param array $args       An array of terms query arguments.
+	 * @param array $_args      Array of `get_terms()` arguments, as passed to the function.
 	 */
-	$clauses = apply_filters( 'terms_clauses', compact( $pieces ), $taxonomies, $args );
+	$clauses = apply_filters( 'terms_clauses', compact( $pieces ), $taxonomies, $args, $_args );
 
 	$fields = isset( $clauses[ 'fields' ] ) ? $clauses[ 'fields' ] : '';
 	$join = isset( $clauses[ 'join' ] ) ? $clauses[ 'join' ] : '';
@@ -2020,7 +2030,7 @@ function get_terms( $taxonomies, $args = '' ) {
 		wp_cache_add( $cache_key, array(), 'terms', DAY_IN_SECONDS );
 
 		/** This filter is documented in wp-includes/taxonomy.php */
-		return apply_filters( 'get_terms', array(), $taxonomies, $args );
+		return apply_filters( 'get_terms', array(), $taxonomies, $args, $_args );
 	}
 
 	if ( $child_of ) {
@@ -2093,7 +2103,7 @@ function get_terms( $taxonomies, $args = '' ) {
 	wp_cache_add( $cache_key, $terms, 'terms', DAY_IN_SECONDS );
 
 	/** This filter is documented in wp-includes/taxonomy */
-	return apply_filters( 'get_terms', $terms, $taxonomies, $args );
+	return apply_filters( 'get_terms', $terms, $taxonomies, $args, $_args );
 }
 
 /**
