In is_object_in_term()
, return error object rather than caching it.
This change prevents an error object from being stored in the cache, and prevents notices from being thrown when plucking term IDs to put into the relationship cache. See #32044, #36814. Props rpayne7264. Fixes #37721. git-svn-id: https://develop.svn.wordpress.org/trunk@38277 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
e1590fff09
commit
83c7544ef8
@ -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" );
|
||||
}
|
||||
|
||||
|
@ -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' ) );
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user