After [28883], remove_filter() should set $GLOBALS['wp_filter'][ $tag ] to array() when empty.

Props wonderboymusic, sphoid.
Fixes #28142.


git-svn-id: https://develop.svn.wordpress.org/trunk@28884 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Scott Taylor 2014-06-28 04:37:47 +00:00
parent d88a14ee67
commit 79b2bb391c

View File

@ -273,15 +273,19 @@ function apply_filters_ref_array($tag, $args) {
* @return boolean Whether the function existed before it was removed.
*/
function remove_filter( $tag, $function_to_remove, $priority = 10 ) {
$function_to_remove = _wp_filter_build_unique_id($tag, $function_to_remove, $priority);
$function_to_remove = _wp_filter_build_unique_id( $tag, $function_to_remove, $priority );
$r = isset($GLOBALS['wp_filter'][$tag][$priority][$function_to_remove]);
$r = isset( $GLOBALS['wp_filter'][ $tag ][ $priority ][ $function_to_remove ] );
if ( true === $r) {
unset($GLOBALS['wp_filter'][$tag][$priority][$function_to_remove]);
if ( empty($GLOBALS['wp_filter'][$tag][$priority]) )
unset($GLOBALS['wp_filter'][$tag][$priority]);
unset($GLOBALS['merged_filters'][$tag]);
if ( true === $r ) {
unset( $GLOBALS['wp_filter'][ $tag ][ $priority ][ $function_to_remove ] );
if ( empty( $GLOBALS['wp_filter'][ $tag ][ $priority ] ) ) {
unset( $GLOBALS['wp_filter'][ $tag ][ $priority ] );
}
if ( empty( $GLOBALS['wp_filter'][ $tag ] ) ) {
$GLOBALS['wp_filter'][ $tag ] = array();
}
unset( $GLOBALS['merged_filters'][ $tag ] );
}
return $r;