_wp_filter_build_unique_id()WP 2.2.3

Builds a unique string ID for a hook callback function.

Functions and static method callbacks are just returned as strings and shouldn't have any speed penalty.

Internal function — this function is designed to be used by the kernel itself. It is not recommended to use this function in your code.

No Hooks.

Returns

string|null. Unique function ID for usage as array key, or null if it couldn't be determined.

Usage

_wp_filter_build_unique_id( $hook_name, $callback, $priority ): ?string;
$hook_name(string) (required)
Unused. The name of the filter to build ID for.
$callback(callable) (required)
The callback to generate ID for. The callback may or may not exist.
$priority(int) (required)
Unused. The order in which the functions associated with a particular action are executed.

Changelog

Since 2.2.3 Introduced.
Since 5.3.0 Removed workarounds for spl_object_hash(). (hook_name) $priority are no longer used, and no longer returns false, but can still return void for invalid callbacks.
Since 6.9.0 Returns explicit null if an invalid callback is supplied.
Since 7.1.0 Uses spl_object_id() instead of spl_object_hash() for performance.

_wp_filter_build_unique_id() code WP 7.1

function _wp_filter_build_unique_id( $hook_name, $callback, $priority ): ?string {
	if ( is_string( $callback ) ) {
		return $callback;
	}

	if ( is_object( $callback ) ) {
		return (string) spl_object_id( $callback );
	}

	if ( ! isset( $callback[1] ) || ! is_string( $callback[1] ) ) {
		return null;
	}

	if ( is_object( $callback[0] ) ) {
		// Object class calling.
		return ( (string) spl_object_id( $callback[0] ) ) . $callback[1];
	} elseif ( is_string( $callback[0] ) ) {
		// Static calling.
		return $callback[0] . '::' . $callback[1];
	}

	return null;
}