remove_filter

The timeline below displays how wordpress function remove_filter has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 5.9

/**
 * Removes a callback function from a filter hook.
 *
 * This can be used to remove default functions attached to a specific filter
 * hook and possibly replace them with a substitute.
 *
 * To remove a hook, the `$callback` and `$priority` arguments must match
 * when the hook was added. This goes for both filters and actions. No warning
 * will be given on removal failure.
 *
 * @since 1.2.0
 *
 * @global WP_Hook[] $wp_filter Stores all of the filters and actions.
 *
 * @param string                $hook_name The filter hook to which the function to be removed is hooked.
 * @param callable|string|array $callback  The callback to be removed from running when the filter is applied.
 *                                         This function can be called unconditionally to speculatively remove
 *                                         a callback that may or may not exist.
 * @param int                   $priority  Optional. The exact priority used when adding the original
 *                                         filter callback. Default 10.
 * @return bool Whether the function existed before it was removed.
 */
function remove_filter($hook_name, $callback, $priority = 10)
{
    global $wp_filter;
    $r = false;
    if (isset($wp_filter[$hook_name])) {
        $r = $wp_filter[$hook_name]->remove_filter($hook_name, $callback, $priority);
        if (!$wp_filter[$hook_name]->callbacks) {
            unset($wp_filter[$hook_name]);
        }
    }
    return $r;
}

WordPress Version: 5.8

/**
 * Removes a callback function from a filter hook.
 *
 * This can be used to remove default functions attached to a specific filter
 * hook and possibly replace them with a substitute.
 *
 * To remove a hook, the `$callback` and `$priority` arguments must match
 * when the hook was added. This goes for both filters and actions. No warning
 * will be given on removal failure.
 *
 * @since 1.2.0
 *
 * @global WP_Hook[] $wp_filter Stores all of the filters and actions.
 *
 * @param string   $hook_name The filter hook to which the function to be removed is hooked.
 * @param callable $callback  The name of the function which should be removed.
 * @param int      $priority  Optional. The exact priority used when adding the original
 *                            filter callback. Default 10.
 * @return bool Whether the function existed before it was removed.
 */
function remove_filter($hook_name, $callback, $priority = 10)
{
    global $wp_filter;
    $r = false;
    if (isset($wp_filter[$hook_name])) {
        $r = $wp_filter[$hook_name]->remove_filter($hook_name, $callback, $priority);
        if (!$wp_filter[$hook_name]->callbacks) {
            unset($wp_filter[$hook_name]);
        }
    }
    return $r;
}

WordPress Version: 5.6

/**
 * Removes a function from a specified filter hook.
 *
 * This function removes a function attached to a specified filter hook. This
 * method can be used to remove default functions attached to a specific filter
 * hook and possibly replace them with a substitute.
 *
 * To remove a hook, the $function_to_remove and $priority arguments must match
 * when the hook was added. This goes for both filters and actions. No warning
 * will be given on removal failure.
 *
 * @since 1.2.0
 *
 * @global WP_Hook[] $wp_filter Stores all of the filters and actions.
 *
 * @param string   $tag                The filter hook to which the function to be removed is hooked.
 * @param callable $function_to_remove The name of the function which should be removed.
 * @param int      $priority           Optional. The priority of the function. Default 10.
 * @return bool    Whether the function existed before it was removed.
 */
function remove_filter($tag, $function_to_remove, $priority = 10)
{
    global $wp_filter;
    $r = false;
    if (isset($wp_filter[$tag])) {
        $r = $wp_filter[$tag]->remove_filter($tag, $function_to_remove, $priority);
        if (!$wp_filter[$tag]->callbacks) {
            unset($wp_filter[$tag]);
        }
    }
    return $r;
}

WordPress Version: 5.4

/**
 * Removes a function from a specified filter hook.
 *
 * This function removes a function attached to a specified filter hook. This
 * method can be used to remove default functions attached to a specific filter
 * hook and possibly replace them with a substitute.
 *
 * To remove a hook, the $function_to_remove and $priority arguments must match
 * when the hook was added. This goes for both filters and actions. No warning
 * will be given on removal failure.
 *
 * @since 1.2.0
 *
 * @global array $wp_filter Stores all of the filters and actions.
 *
 * @param string   $tag                The filter hook to which the function to be removed is hooked.
 * @param callable $function_to_remove The name of the function which should be removed.
 * @param int      $priority           Optional. The priority of the function. Default 10.
 * @return bool    Whether the function existed before it was removed.
 */
function remove_filter($tag, $function_to_remove, $priority = 10)
{
    global $wp_filter;
    $r = false;
    if (isset($wp_filter[$tag])) {
        $r = $wp_filter[$tag]->remove_filter($tag, $function_to_remove, $priority);
        if (!$wp_filter[$tag]->callbacks) {
            unset($wp_filter[$tag]);
        }
    }
    return $r;
}

WordPress Version: 4.7

/**
 * Removes a function from a specified filter hook.
 *
 * This function removes a function attached to a specified filter hook. This
 * method can be used to remove default functions attached to a specific filter
 * hook and possibly replace them with a substitute.
 *
 * To remove a hook, the $function_to_remove and $priority arguments must match
 * when the hook was added. This goes for both filters and actions. No warning
 * will be given on removal failure.
 *
 * @since 1.2.0
 *
 * @global array $wp_filter         Stores all of the filters
 *
 * @param string   $tag                The filter hook to which the function to be removed is hooked.
 * @param callable $function_to_remove The name of the function which should be removed.
 * @param int      $priority           Optional. The priority of the function. Default 10.
 * @return bool    Whether the function existed before it was removed.
 */
function remove_filter($tag, $function_to_remove, $priority = 10)
{
    global $wp_filter;
    $r = false;
    if (isset($wp_filter[$tag])) {
        $r = $wp_filter[$tag]->remove_filter($tag, $function_to_remove, $priority);
        if (!$wp_filter[$tag]->callbacks) {
            unset($wp_filter[$tag]);
        }
    }
    return $r;
}

WordPress Version: 4.4

/**
 * Removes a function from a specified filter hook.
 *
 * This function removes a function attached to a specified filter hook. This
 * method can be used to remove default functions attached to a specific filter
 * hook and possibly replace them with a substitute.
 *
 * To remove a hook, the $function_to_remove and $priority arguments must match
 * when the hook was added. This goes for both filters and actions. No warning
 * will be given on removal failure.
 *
 * @since 1.2.0
 *
 * @global array $wp_filter         Stores all of the filters
 * @global array $merged_filters    Merges the filter hooks using this function.
 *
 * @param string   $tag                The filter hook to which the function to be removed is hooked.
 * @param callable $function_to_remove The name of the function which should be removed.
 * @param int      $priority           Optional. The priority of the function. Default 10.
 * @return bool    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);
    $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]);
        }
        if (empty($GLOBALS['wp_filter'][$tag])) {
            $GLOBALS['wp_filter'][$tag] = array();
        }
        unset($GLOBALS['merged_filters'][$tag]);
    }
    return $r;
}

WordPress Version: 4.3

/**
 * Removes a function from a specified filter hook.
 *
 * This function removes a function attached to a specified filter hook. This
 * method can be used to remove default functions attached to a specific filter
 * hook and possibly replace them with a substitute.
 *
 * To remove a hook, the $function_to_remove and $priority arguments must match
 * when the hook was added. This goes for both filters and actions. No warning
 * will be given on removal failure.
 *
 * @since 1.2.0
 *
 * @global array $wp_filter         Stores all of the filters
 * @global array $merged_filters    Merges the filter hooks using this function.
 *
 * @param string   $tag                The filter hook to which the function to be removed is hooked.
 * @param callback $function_to_remove The name of the function which should be removed.
 * @param int      $priority           Optional. The priority of the function. Default 10.
 * @return bool    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);
    $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]);
        }
        if (empty($GLOBALS['wp_filter'][$tag])) {
            $GLOBALS['wp_filter'][$tag] = array();
        }
        unset($GLOBALS['merged_filters'][$tag]);
    }
    return $r;
}

WordPress Version: 4.0

/**
 * Removes a function from a specified filter hook.
 *
 * This function removes a function attached to a specified filter hook. This
 * method can be used to remove default functions attached to a specific filter
 * hook and possibly replace them with a substitute.
 *
 * To remove a hook, the $function_to_remove and $priority arguments must match
 * when the hook was added. This goes for both filters and actions. No warning
 * will be given on removal failure.
 *
 * @since 1.2.0
 *
 * @param string   $tag                The filter hook to which the function to be removed is hooked.
 * @param callback $function_to_remove The name of the function which should be removed.
 * @param int      $priority           Optional. The priority of the function. Default 10.
 * @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);
    $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]);
        }
        if (empty($GLOBALS['wp_filter'][$tag])) {
            $GLOBALS['wp_filter'][$tag] = array();
        }
        unset($GLOBALS['merged_filters'][$tag]);
    }
    return $r;
}

WordPress Version: 3.9

/**
 * Removes a function from a specified filter hook.
 *
 * This function removes a function attached to a specified filter hook. This
 * method can be used to remove default functions attached to a specific filter
 * hook and possibly replace them with a substitute.
 *
 * To remove a hook, the $function_to_remove and $priority arguments must match
 * when the hook was added. This goes for both filters and actions. No warning
 * will be given on removal failure.
 *
 * @since 1.2.0
 *
 * @param string $tag The filter hook to which the function to be removed is hooked.
 * @param callback $function_to_remove The name of the function which should be removed.
 * @param int $priority optional. The priority of the function (default: 10).
 * @param int $accepted_args optional. The number of arguments the function accepts (default: 1).
 * @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);
    $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]);
    }
    return $r;
}

WordPress Version: 3.7

/**
 * Removes a function from a specified filter hook.
 *
 * This function removes a function attached to a specified filter hook. This
 * method can be used to remove default functions attached to a specific filter
 * hook and possibly replace them with a substitute.
 *
 * To remove a hook, the $function_to_remove and $priority arguments must match
 * when the hook was added. This goes for both filters and actions. No warning
 * will be given on removal failure.
 *
 * @package WordPress
 * @subpackage Plugin
 * @since 1.2
 *
 * @param string $tag The filter hook to which the function to be removed is hooked.
 * @param callback $function_to_remove The name of the function which should be removed.
 * @param int $priority optional. The priority of the function (default: 10).
 * @param int $accepted_args optional. The number of arguments the function accepts (default: 1).
 * @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);
    $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]);
    }
    return $r;
}