WP_Hook::has_filter( string $hook_name, callable|string|array|false $callback = false, int|false $priority = false ): bool|int

Checks if a specific callback has been registered for this hook.

Description

When using the $callback argument, this function may return a non-boolean value that evaluates to false (e.g. 0), so use the === operator for testing the return value.

Parameters

$hook_namestringoptional
The name of the filter hook. Default empty.
$callbackcallable|string|array|falseoptional
The callback to check for.
This method can be called unconditionally to speculatively check a callback that may or may not exist.

Default:false

$priorityint|falseoptional
The specific priority at which to check for the callback.

Default:false

Return

bool|int If $callback is omitted, returns boolean for whether the hook has anything registered. When checking a specific function, the priority of that hook is returned, or false if the function is not attached.
If $callback and $priority are both provided, a boolean is returned for whether the specific function is registered at that priority.

Source

public function has_filter( $hook_name = '', $callback = false, $priority = false ) {
	if ( false === $callback ) {
		return $this->has_filters();
	}

	$function_key = _wp_filter_build_unique_id( $hook_name, $callback, false );

	if ( ! $function_key ) {
		return false;
	}

	if ( is_int( $priority ) ) {
		return isset( $this->callbacks[ $priority ][ $function_key ] );
	}

	foreach ( $this->callbacks as $callback_priority => $callbacks ) {
		if ( isset( $callbacks[ $function_key ] ) ) {
			return $callback_priority;
		}
	}

	return false;
}

Changelog

VersionDescription
6.9.0Added the $priority parameter.
4.7.0Introduced.

User Contributed Notes

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