# _wp_to_kebab_case()

URL: https://chugunov.pro/api-wordpress/functions/_wp_to_kebab_case/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 5.8.0.

## Сигнатура

```php
_wp_to_kebab_case( string $input_string ): string
```

## Описание

Эта функция нужна потому, что часть обработки выполняется и на клиенте, и на сервере (например, мы генерируем классы пресетов из слагов пресетов), и результат должен быть одинаковым.
Мы не можем удалить или обновить клиентскую библиотеку из соображений обратной совместимости (часть результата kebabCase из lodash сохраняется в содержимом записи).
Нам приходится заставлять сервер вести себя так же, как клиент.
Изменения в этой функции должны следовать за обновлениями на клиенте с той же логикой.

## Параметры

- `$input_string` `string` — обязательный. Строка для преобразования в kebab-case.

## Возвращаемое значение

`string`

## Исходный код

Файл: `wp-includes/functions.php:5233`

```php
function _wp_to_kebab_case( $input_string ) {
	// Ignore the camelCase names for variables so the names are the same as lodash so comparing and porting new changes is easier.
	// phpcs:disable WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase

	/*
	 * Some notable things we've removed compared to the lodash version are:
	 *
	 * - non-alphanumeric characters: rsAstralRange, rsEmoji, etc
	 * - the groups that processed the apostrophe, as it's removed before passing the string to preg_match: rsApos, rsOptContrLower, and rsOptContrUpper
	 *
	 */

	/** Used to compose unicode character classes. */
	$rsLowerRange       = 'a-z\\xdf-\\xf6\\xf8-\\xff';
	$rsNonCharRange     = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf';
	$rsPunctuationRange = '\\x{2000}-\\x{206f}';
	$rsSpaceRange       = ' \\t\\x0b\\f\\xa0\\x{feff}\\n\\r\\x{2028}\\x{2029}\\x{1680}\\x{180e}\\x{2000}\\x{2001}\\x{2002}\\x{2003}\\x{2004}\\x{2005}\\x{2006}\\x{2007}\\x{2008}\\x{2009}\\x{200a}\\x{202f}\\x{205f}\\x{3000}';
	$rsUpperRange       = 'A-Z\\xc0-\\xd6\\xd8-\\xde';
	$rsBreakRange       = $rsNonCharRange . $rsPunctuationRange . $rsSpaceRange;

	/** Used to compose unicode capture groups. */
	$rsBreak  = '[' . $rsBreakRange . ']';
	$rsDigits = '\\d+'; // The last lodash version in GitHub uses a single digit here and expands it when in use.
	$rsLower  = '[' . $rsLowerRange . ']';
	$rsMisc   = '[^' . $rsBreakRange . $rsDigits . $rsLowerRange . $rsUpperRange . ']';
	$rsUpper  = '[' . $rsUpperRange . ']';

	/** Used to compose unicode regexes. */
	$rsMiscLower = '(?:' . $rsLower . '|' . $rsMisc . ')';
	$rsMiscUpper = '(?:' . $rsUpper . '|' . $rsMisc . ')';
	$rsOrdLower  = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])';
	$rsOrdUpper  = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])';

	$regexp = '/' . implode(
		'|',
		array(
			$rsUpper . '?' . $rsLower . '+' . '(?=' . implode( '|', array( $rsBreak, $rsUpper, '$' ) ) . ')',
			$rsMiscUpper . '+' . '(?=' . implode( '|', array( $rsBreak, $rsUpper . $rsMiscLower, '$' ) ) . ')',
			$rsUpper . '?' . $rsMiscLower . '+',
			$rsUpper . '+',
			$rsOrdUpper,
			$rsOrdLower,
			$rsDigits,
		)
	) . '/u';

	preg_match_all( $regexp, str_replace( "'", '', $input_string ), $matches );
	return strtolower( implode( '-', $matches[0] ) );
	// phpcs:enable WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase
}
```

## История изменений

- 5.8.0 — Introduced.

## Связанные

Используется в: `WP_Theme_JSON_Resolver::inject_variations_from_block_style_variation_files`, `WP_Font_Collection::get_sanitization_schema`, `WP_Font_Face_Resolver::to_kebab_case`, `WP_Duotone::get_all_global_styles_presets`, `WP_Style_Engine::get_css_declarations`, `WP_Style_Engine::get_slug_from_preset_value`, [`_wp_theme_json_webfonts_handler`](https://chugunov.pro/api-wordpress/functions/_wp_theme_json_webfonts_handler/), `WP_Theme_JSON::get_settings_values_by_slug`, `WP_Theme_JSON::get_settings_slugs`, `WP_Theme_JSON::flatten_tree`.

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/_wp_to_kebab_case/
