wp_unique_prefixed_id( string $prefix =  ): string

Generates an incremental ID that is independent per each different prefix.


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.


Prefix for the returned ID.



string Incremental ID per prefix.


function wp_unique_prefixed_id( $prefix = '' ) {
	static $id_counters = array();

	if ( ! is_string( $prefix ) ) {
			sprintf( 'The prefix must be a string. "%s" data type given.', gettype( $prefix ) )
		$prefix = '';

	if ( ! isset( $id_counters[ $prefix ] ) ) {
		$id_counters[ $prefix ] = 0;

	$id = ++$id_counters[ $prefix ];

	return $prefix . (string) $id;



User Contributed Notes

  1. Skip to note 2 content

    One might ask: what is the difference between wp_unique_id( 'my-prefix' ); and wp_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 on wp_unique_id( 'my-prefix' ). Your counter will be 2.

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