remove_filter( string $hook_name, callable|string|array $callback, int $priority = 10 ): bool

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.


The filter hook to which the function to be removed is hooked.
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.
The exact priority used when adding the original filter callback.



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;



User Contributed Notes

  1. Skip to note 2 content


    remove_filter( 'the_content', 'wpautop' );
    foreach ( array( 'the_content', 'the_title', 'comment_text' ) as $hook )
        remove_filter( $hook, 'capital_P_dangit' );

    If a filter has been added from within a class, for example by a plugin, removing it will require accessing the class variable.

    global $my_class;
    remove_filter( 'the_content', array($my_class, 'class_filter_function') );

    It is also worth noting that you may need to prioritise the removal of the filter to a hook that occurs after the filter is added. You cannot successfully remove the filter before it has been added.

You must log in before being able to contribute a note or feedback.