_wp_filter_build_unique_id()
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 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;
}