_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.

Внутренняя функция — эта функция рассчитана на использование самим ядром. Не рекомендуется использовать эту функцию в своем коде.

Хуков нет.

Возвращает

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

Использование

_wp_filter_build_unique_id( $hook_name, $callback, $priority ): ?string;
$hook_name(строка) (обязательный)
Unused. The name of the filter to build ID for.
$callback(callable) (обязательный)
The callback to generate ID for. The callback may or may not exist.
$priority(int) (обязательный)
Unused. The order in which the functions associated with a particular action are executed.

Список изменений

С версии 2.2.3 Введена.
С версии 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.
С версии 6.9.0 Returns explicit null if an invalid callback is supplied.
С версии 7.1.0 Uses spl_object_id() instead of spl_object_hash() for performance.
С версии 7.1.1 The ID for an object callback is prefixed so that it is never cast to an integer array key.

Код _wp_filter_build_unique_id() WP 7.1.3

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

	if ( is_object( $callback ) ) {
		/*
		 * The prefix keeps the ID from being the decimal representation of an integer. PHP casts such a
		 * string to int when it is used as an array key, which would change the type of the keys in
		 * WP_Hook::$callbacks and break consumers that pass them to string functions.
		 */
		return 'spl_object_id:' . 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;
}