diff --git src/wp-includes/plugin.php src/wp-includes/plugin.php
index ea5832a..bfa5f9d 100644
|
|
|
function add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 |
| 107 | 107 | function has_filter($tag, $function_to_check = false) { |
| 108 | 108 | global $wp_filter; |
| 109 | 109 | |
| 110 | | $has = !empty($wp_filter[$tag]); |
| | 110 | $has = ! empty( $wp_filter[ $tag ] ); |
| | 111 | |
| | 112 | // Make sure at least one priority has a filter callback |
| | 113 | if ( $has ) { |
| | 114 | $exists = false; |
| | 115 | foreach ( $wp_filter[ $tag ] as $callbacks ) { |
| | 116 | if ( ! empty( $callbacks ) ) { |
| | 117 | $exists = true; |
| | 118 | break; |
| | 119 | } |
| | 120 | } |
| | 121 | |
| | 122 | if ( ! $exists ) { |
| | 123 | $has = false; |
| | 124 | } |
| | 125 | } |
| | 126 | |
| 111 | 127 | if ( false === $function_to_check || false == $has ) |
| 112 | 128 | return $has; |
| 113 | 129 | |
diff --git tests/phpunit/tests/filters.php tests/phpunit/tests/filters.php
index 0f6d00a..34fdf56 100644
|
|
|
class Tests_Filters extends WP_UnitTestCase { |
| 267 | 267 | $this->assertEquals( 1, $b->get_call_count(), 'priority 12 filters should run after priority 10 empties itself and priority 11 runs' ); |
| 268 | 268 | $this->assertEquals( $result, $tag . '_append_append', 'priority 11 and 12 filters should run after priority 10 empties itself' ); |
| 269 | 269 | } |
| | 270 | |
| | 271 | /** |
| | 272 | * @ticket 29070 |
| | 273 | */ |
| | 274 | function test_has_filter_after_remove_all_filters() { |
| | 275 | $a = new MockAction(); |
| | 276 | $tag = rand_str(); |
| | 277 | $val = rand_str(); |
| | 278 | |
| | 279 | // No priority |
| | 280 | add_filter( $tag, array( $a, 'filter' ), 11 ); |
| | 281 | add_filter( $tag, array( $a, 'filter' ), 12 ); |
| | 282 | $this->assertTrue( has_filter( $tag ) ); |
| | 283 | |
| | 284 | remove_all_filters( $tag ); |
| | 285 | $this->assertFalse( has_filter( $tag ) ); |
| | 286 | |
| | 287 | // Remove priorities one at a time |
| | 288 | add_filter( $tag, array( $a, 'filter' ), 11 ); |
| | 289 | add_filter( $tag, array( $a, 'filter' ), 12 ); |
| | 290 | $this->assertTrue( has_filter( $tag ) ); |
| | 291 | |
| | 292 | remove_all_filters( $tag, 11 ); |
| | 293 | remove_all_filters( $tag, 12 ); |
| | 294 | $this->assertFalse( has_filter( $tag ) ); |
| | 295 | } |
| 270 | 296 | } |