diff --git src/wp-includes/user.php src/wp-includes/user.php
index 9db8521..e602a3e 100644
--- src/wp-includes/user.php
+++ src/wp-includes/user.php
@@ -626,15 +626,22 @@ class WP_User_Query {
 			$include = false;
 		}
 
-		// Meta query.
-		$this->meta_query = new WP_Meta_Query();
-		$this->meta_query->parse_query_vars( $qv );
-
 		$blog_id = 0;
 		if ( isset( $qv['blog_id'] ) ) {
 			$blog_id = absint( $qv['blog_id'] );
 		}
 
+		if ( isset( $qv['who'] ) && 'authors' == $qv['who'] && $blog_id ) {
+			$qv['meta_key'] = $wpdb->get_blog_prefix( $blog_id ) . 'user_level';
+			$qv['meta_value'] = 0;
+			$qv['meta_compare'] = '!=';
+			$qv['blog_id'] = $blog_id = 0; // Prevent extra meta query
+		}
+
+		// Meta query.
+		$this->meta_query = new WP_Meta_Query();
+		$this->meta_query->parse_query_vars( $qv );
+
 		$role = '';
 		if ( isset( $qv['role'] ) ) {
 			$role = trim( $qv['role'] );
@@ -775,13 +782,6 @@ class WP_User_Query {
 			$this->query_where .= $this->get_search_sql( $search, $search_columns, $wild );
 		}
 
-		if ( isset( $qv['who'] ) && 'authors' == $qv['who'] && $blog_id ) {
-			$qv['meta_key'] = $wpdb->get_blog_prefix( $blog_id ) . 'user_level';
-			$qv['meta_value'] = 0;
-			$qv['meta_compare'] = '!=';
-			$qv['blog_id'] = $blog_id = 0; // Prevent extra meta query
-		}
-
 		if ( ! empty( $include ) ) {
 			// Sanitized earlier.
 			$ids = implode( ',', $include );
diff --git tests/phpunit/tests/user/query.php tests/phpunit/tests/user/query.php
index f208f56..9abf99d 100644
--- tests/phpunit/tests/user/query.php
+++ tests/phpunit/tests/user/query.php
@@ -625,4 +625,65 @@ class Tests_User_Query extends WP_UnitTestCase {
 		$this->assertSame( array( 'author' ), $user->roles );
 		$this->assertSame( array( 'author' => true ), $user->caps );
 	}
+
+	/**
+	 * @ticket 32019
+	 */
+	public function test_who_authors() {
+		if ( ! is_multisite() ) {
+			$this->markTestSkipped( __METHOD__ . ' requires multisite.' );
+		}
+
+		$b = $this->factory->blog->create();
+		$users = $this->factory->user->create_many( 3 );
+
+		add_user_to_blog( $b, $users[0], 'subscriber' );
+		add_user_to_blog( $b, $users[1], 'author' );
+		add_user_to_blog( $b, $users[2], 'editor' );
+
+		$q = new WP_User_Query( array(
+			'who' => 'authors',
+			'blog_id' => $b,
+		) );
+
+		$found = wp_list_pluck( $q->get_results(), 'ID' );
+
+		$this->assertNotContains( $users[0], $found );
+		$this->assertContains( $users[1], $found );
+		$this->assertContains( $users[2], $found );
+	}
+
+	/**
+	 * @ticket 32019
+	 */
+	public function test_who_authors_should_work_alongside_meta_query() {
+		if ( ! is_multisite() ) {
+			$this->markTestSkipped( __METHOD__ . ' requires multisite.' );
+		}
+
+		$b = $this->factory->blog->create();
+		$users = $this->factory->user->create_many( 3 );
+
+		add_user_to_blog( $b, $users[0], 'subscriber' );
+		add_user_to_blog( $b, $users[1], 'author' );
+		add_user_to_blog( $b, $users[2], 'editor' );
+
+		add_user_meta( $users[1], 'foo', 'bar' );
+		add_user_meta( $users[2], 'foo', 'baz' );
+
+		$q = new WP_User_Query( array(
+			'who' => 'authors',
+			'blog_id' => $b,
+			'meta_query' => array(
+				'key' => 'foo',
+				'value' => 'bar',
+			),
+		) );
+
+		$found = wp_list_pluck( $q->get_results(), 'ID' );
+
+		$this->assertNotContains( $users[0], $found );
+		$this->assertContains( $users[1], $found );
+		$this->assertNotContains( $users[2], $found );
+	}
 }
