wp_unique_id_from_values()WP 6.8.0

Создаёт короткий идентификатор на основе структуры и значений массива.

Преобразует массив в JSON, вычисляет MD5-хеш и использует его первые 8 символов. Одинаковые массивы создают одинаковые идентификаторы. Порядок элементов и ключей влияет на результат.

Идентификатор не гарантирует абсолютную уникальность, потому что хеш сокращается до 8 символов. Не используйте его как секретный токен или в случаях, где коллизии недопустимы.

Используйте wp_unique_id(), когда каждый вызов должен создавать новый идентификатор независимо от переданных данных.

Хуков нет.

Возвращает

string.

  • строку - 8-символьный хеш с указанным префиксом.

Использование

wp_unique_id_from_values( $data, $prefix ): string;
$data(массив) (обязательный)

Данные, на основе которых создаётся идентификатор.

Массив не должен быть пустым. При передаче пустого массива WordPress создаст предупреждение _doing_it_wrong(), но продолжит выполнение и создаст идентификатор.

$prefix(строка)
Префикс, добавляемый перед хешем. Префикс не участвует в вычислении хеша.
По умолчанию: ''

Примеры

#1 Создание CSS-класса на основе настроек

Одинаковый набор настроек всегда создаст одинаковое имя класса.

$layout = [
	'layout'  => 'grid',
	'columns' => 3,
	'gap'     => '24px',
];

$class_name = wp_unique_id_from_values( $layout, 'layout-' );

printf(
	'<div class="%s">Content</div>',
	esc_attr( $class_name )
);

Список изменений

С версии 6.8.0 Введена.

Код wp_unique_id_from_values() WP 7.1

function wp_unique_id_from_values( array $data, string $prefix = '' ): string {
	if ( empty( $data ) ) {
		_doing_it_wrong(
			__FUNCTION__,
			sprintf(
				/* translators: %s: The parameter name. */
				__( 'The %s parameter must not be empty.' ),
				'$data'
			),
			'6.8.0'
		);
	}

	$serialized = wp_json_encode( $data );
	$hash       = substr( md5( $serialized ), 0, 8 );

	return $prefix . $hash;
}