Generates an incremental ID that is independent per each different prefix.
Description
It is similar to wp_unique_id
, but each prefix has its own internal ID counter to make each prefix independent from each other. The ID starts at 1 and increments on each call. The returned value is not universally unique, but it is unique across the life of the PHP process and it’s stable per prefix.
Parameters
$prefix
stringoptional- Prefix for the returned ID.
Default:
''
Source
* Gets unique ID.
*
* This is a PHP implementation of Underscore's uniqueId method. A static variable
* contains an integer that is incremented with each call. This number is returned
* with the optional prefix. As such the returned value is not universally unique,
* but it is unique across the life of the PHP process.
*
* @since 5.0.3
*
* @param string $prefix Prefix for the returned ID.
* @return string Unique ID.
*/
function wp_unique_id( $prefix = '' ) {
static $id_counter = 0;
return $prefix . (string) ++$id_counter;
}
/**
* Generates an incremental ID that is independent per each different prefix.
Changelog
Version | Description |
---|---|
6.4.0 | Introduced. |
One might ask: what is the difference between
wp_unique_id( 'my-prefix' );
andwp_prefixed_unique_id( 'my-prefix' )
, because they both increment a counter.wp_prefixed_unique_id( 'my-prefix' );
increments based on the matching of the actual prefix string:my-prefix
.wp_unique_id()
will increment regardless of whether you provide a string or not, and it will not attempt to match the string.So, another plugin might call
wp_unique_id()
on the page lifecycle and you call later onwp_unique_id( 'my-prefix' )
. Your counter will be2
.wp_unique_prefixed_id()
and notwp_prefixed_unique_id()
in all of my examples above. 🤦🏼♂️