From 990eebf37341918c0c4896140c26038d14a2f32f Mon Sep 17 00:00:00 2001 From: Boone Gorges Date: Mon, 19 Oct 2015 01:52:22 +0000 Subject: [PATCH] Bust object term cache in `wp_remove_object_terms()`. Props tszming. Fixes #34338. git-svn-id: https://develop.svn.wordpress.org/trunk@35268 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/taxonomy-functions.php | 2 ++ .../tests/term/wpRemoveObjectTerms.php | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 tests/phpunit/tests/term/wpRemoveObjectTerms.php diff --git a/src/wp-includes/taxonomy-functions.php b/src/wp-includes/taxonomy-functions.php index 3a3fd2a6cc..22f858da26 100644 --- a/src/wp-includes/taxonomy-functions.php +++ b/src/wp-includes/taxonomy-functions.php @@ -2908,6 +2908,8 @@ function wp_remove_object_terms( $object_id, $terms, $taxonomy ) { do_action( 'delete_term_relationships', $object_id, $tt_ids ); $deleted = $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->term_relationships WHERE object_id = %d AND term_taxonomy_id IN ($in_tt_ids)", $object_id ) ); + wp_cache_delete( $object_id, $taxonomy . '_relationships' ); + /** * Fires immediately after an object-term relationship is deleted. * diff --git a/tests/phpunit/tests/term/wpRemoveObjectTerms.php b/tests/phpunit/tests/term/wpRemoveObjectTerms.php new file mode 100644 index 0000000000..a49278160c --- /dev/null +++ b/tests/phpunit/tests/term/wpRemoveObjectTerms.php @@ -0,0 +1,24 @@ +post->create(); + $t = self::factory()->term->create( array( 'taxonomy' => 'wptests_tax' ) ); + + wp_set_object_terms( $p, $t, 'wptests_tax' ); + + // Pollute the cache. + get_the_terms( $p, 'wptests_tax' ); + + wp_remove_object_terms( $p, $t, 'wptests_tax' ); + + $this->assertFalse( get_the_terms( $p, 'wptests_tax' ) ); + } +}