diff --git a/src/wp-includes/taxonomy.php b/src/wp-includes/taxonomy.php index 104a4afdb5..70af35a326 100644 --- a/src/wp-includes/taxonomy.php +++ b/src/wp-includes/taxonomy.php @@ -4274,6 +4274,10 @@ function is_object_in_term( $object_id, $taxonomy, $terms = null ) { $object_terms = get_object_term_cache( $object_id, $taxonomy ); if ( false === $object_terms ) { $object_terms = wp_get_object_terms( $object_id, $taxonomy, array( 'update_term_meta_cache' => false ) ); + if ( is_wp_error( $object_terms ) ) { + return $object_terms; + } + wp_cache_set( $object_id, wp_list_pluck( $object_terms, 'term_id' ), "{$taxonomy}_relationships" ); } diff --git a/tests/phpunit/tests/term/isObjectInTerm.php b/tests/phpunit/tests/term/isObjectInTerm.php index 0da95ab9fd..ed054f8ea3 100644 --- a/tests/phpunit/tests/term/isObjectInTerm.php +++ b/tests/phpunit/tests/term/isObjectInTerm.php @@ -146,4 +146,11 @@ class Tests_IsObjectInTerm extends WP_UnitTestCase { $num_queries++; $this->assertSame( $num_queries, $wpdb->num_queries ); } + + /** + * @ticket 37721 + */ + public function test_invalid_taxonomy_should_return_wp_error_object() { + $this->assertWPError( is_object_in_term( 12345, 'foo', 'bar' ) ); + } }