In remove_all_filters()
, only remove callbacks that match the $priority
parameter.
Props GeertDD, valendesigns. Fixes #20920. git-svn-id: https://develop.svn.wordpress.org/trunk@31014 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
4d69dbadee
commit
f71821dc05
@ -325,10 +325,10 @@ function remove_all_filters( $tag, $priority = false ) {
|
||||
global $wp_filter, $merged_filters;
|
||||
|
||||
if ( isset( $wp_filter[ $tag ]) ) {
|
||||
if ( false !== $priority && isset( $wp_filter[ $tag ][ $priority ] ) ) {
|
||||
$wp_filter[ $tag ][ $priority ] = array();
|
||||
} else {
|
||||
if ( false === $priority ) {
|
||||
$wp_filter[ $tag ] = array();
|
||||
} else if ( isset( $wp_filter[ $tag ][ $priority ] ) ) {
|
||||
$wp_filter[ $tag ][ $priority ] = array();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -196,6 +196,25 @@ class Tests_Filters extends WP_UnitTestCase {
|
||||
$this->assertEquals(array($tag), $a->get_tags());
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 20920
|
||||
*/
|
||||
function test_remove_all_filters_should_respect_the_priority_argument() {
|
||||
$a = new MockAction();
|
||||
$tag = rand_str();
|
||||
$val = rand_str();
|
||||
|
||||
add_filter( $tag, array( $a, 'filter' ), 12 );
|
||||
$this->assertTrue( has_filter( $tag ) );
|
||||
|
||||
// Should not be removed.
|
||||
remove_all_filters( $tag, 11 );
|
||||
$this->assertTrue( has_filter( $tag ) );
|
||||
|
||||
remove_all_filters( $tag, 12 );
|
||||
$this->assertFalse( has_filter( $tag ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 9886
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user