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.

Top ↑


$prefix string Optional
Prefix for the returned ID.

Default: ''

Top ↑


string Incremental ID per prefix.

Top ↑


File: wp-includes/functions.php. View all references

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;

Top ↑


Version Description
6.4.0 Introduced.

Top ↑

User Contributed Notes

  1. Skip to note 1 content
    Contributed by Damon Cook

    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.