wp_unique_prefixed_id( string $prefix =  ): string

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

$prefixstringoptional
Prefix for the returned ID.

Default:''

Return

string Incremental ID per prefix.

Source

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

	if ( ! is_string( $prefix ) ) {
		wp_trigger_error(
			__FUNCTION__,
			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;
}

Changelog

VersionDescription
6.4.0Introduced.

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.