# wp_salt()

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

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

## Сигнатура

```php
wp_salt( string $scheme = 'auth' ): string
```

## Описание

Соли создаются с использованием секретных ключей. Секретные ключи хранятся в двух местах: в базе данных и в файле wp-config.php. Секретный ключ в базе данных генерируется случайным образом и добавляется к секретным ключам в wp-config.php.
Секретные ключи в wp-config.php следует заменить на надёжные случайные ключи для максимальной безопасности. Ниже приведён пример того, как определяются константы секретных ключей.
Не вставляйте этот пример напрямую в wp-config.php. Вместо этого создайте секретный ключ специально для себя.
define('AUTH_KEY', ' XakmM%G4Yt>f`z]MON');
define('SECURE_AUTH_KEY', 'LzJ}op]mr|6+![P}Ak:uNdJCJZd>(Hx.-Mh#Tz)pCIU#uGEnfFz|f ;;eU%/U^O~');
define('LOGGED_IN_KEY', '|i|Ux`9

## Параметры

- `$scheme` `string` — необязательный, по умолчанию `'auth'`. Схема аутентификации (auth, secure_auth, logged_in, nonce).

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

`string`

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

Файл: `wp-includes/pluggable.php:2581`

```php
function wp_salt( $scheme = 'auth' ) {
	static $cached_salts = array();
	if ( isset( $cached_salts[ $scheme ] ) ) {
		/**
		 * Filters the WordPress salt.
		 *
		 * @since 2.5.0
		 *
		 * @param string $cached_salt Cached salt for the given scheme.
		 * @param string $scheme      Authentication scheme. Values include 'auth',
		 *                            'secure_auth', 'logged_in', and 'nonce'.
		 */
		return apply_filters( 'salt', $cached_salts[ $scheme ], $scheme );
	}

	static $duplicated_keys;
	if ( null === $duplicated_keys ) {
		$duplicated_keys = array();

		foreach ( array( 'AUTH', 'SECURE_AUTH', 'LOGGED_IN', 'NONCE', 'SECRET' ) as $first ) {
			foreach ( array( 'KEY', 'SALT' ) as $second ) {
				if ( ! defined( "{$first}_{$second}" ) ) {
					continue;
				}
				$value                     = constant( "{$first}_{$second}" );
				$duplicated_keys[ $value ] = isset( $duplicated_keys[ $value ] );
			}
		}

		$duplicated_keys['put your unique phrase here'] = true;

		/*
		 * translators: This string should only be translated if wp-config-sample.php is localized.
		 * You can check the localized release package or
		 * https://i18n.svn.wordpress.org/<locale code>/branches/<wp version>/dist/wp-config-sample.php
		 */
		$duplicated_keys[ __( 'put your unique phrase here' ) ] = true;
	}

	/*
	 * Determine which options to prime.
	 *
	 * If the salt keys are undefined, use a duplicate value or the
	 * default `put your unique phrase here` value the salt will be
	 * generated via `wp_generate_password()` and stored as a site
	 * option. These options will be primed to avoid repeated
	 * database requests for undefined salts.
	 */
	$options_to_prime = array();
	foreach ( array( 'auth', 'secure_auth', 'logged_in', 'nonce' ) as $key ) {
		foreach ( array( 'key', 'salt' ) as $second ) {
			$const = strtoupper( "{$key}_{$second}" );
			if ( ! defined( $const ) || true === $duplicated_keys[ constant( $const ) ] ) {
				$options_to_prime[] = "{$key}_{$second}";
			}
		}
	}

	if ( ! empty( $options_to_prime ) ) {
		/*
		 * Also prime `secret_key` used for undefined salting schemes.
		 *
		 * If the scheme is unknown, the default value for `secret_key` will be
		 * used too for the salt. This should rarely happen, so the option is only
		 * primed if other salts are undefined.
		 *
		 * At this point of execution it is known that a database call will be made
		 * to prime salts, so the `secret_key` option can be primed regardless of the
		 * constants status.
		 */
		$options_to_prime[] = 'secret_key';
		wp_prime_site_option_caches( $options_to_prime );
	}

	$values = array(
		'key'  => '',
		'salt' => '',
	);
	if ( defined( 'SECRET_KEY' ) && SECRET_KEY && empty( $duplicated_keys[ SECRET_KEY ] ) ) {
		$values['key'] = SECRET_KEY;
	}
	if ( 'auth' === $scheme && defined( 'SECRET_SALT' ) && SECRET_SALT && empty( $duplicated_keys[ SECRET_SALT ] ) ) {
		$values['salt'] = SECRET_SALT;
	}

	if ( in_array( $scheme, array( 'auth', 'secure_auth', 'logged_in', 'nonce' ), true ) ) {
		foreach ( array( 'key', 'salt' ) as $type ) {
			$const = strtoupper( "{$scheme}_{$type}" );
			if ( defined( $const ) && constant( $const ) && empty( $duplicated_keys[ constant( $const ) ] ) ) {
				$values[ $type ] = constant( $const );
			} elseif ( ! $values[ $type ] ) {
				$values[ $type ] = get_site_option( "{$scheme}_{$type}" );
				if ( ! $values[ $type ] ) {
					$values[ $type ] = wp_generate_password( 64, true, true );
					update_site_option( "{$scheme}_{$type}", $values[ $type ] );
				}
			}
		}
	} else {
		if ( ! $values['key'] ) {
			$values['key'] = get_site_option( 'secret_key' );
			if ( ! $values['key'] ) {
				$values['key'] = wp_generate_password( 64, true, true );
				update_site_option( 'secret_key', $values['key'] );
			}
		}
		$values['salt'] = hash_hmac( 'md5', $scheme, $values['key'] );
	}

	$cached_salts[ $scheme ] = $values['key'] . $values['salt'];

	/** This filter is documented in wp-includes/pluggable.php */
	return apply_filters( 'salt', $cached_salts[ $scheme ], $scheme );
}
```

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

- 2.5.0 — Introduced.

## Связанные

Использует: [`wp_prime_site_option_caches`](https://chugunov.pro/api-wordpress/functions/wp_prime_site_option_caches/), [`wp_generate_password`](https://chugunov.pro/api-wordpress/functions/wp_generate_password/), [`update_site_option`](https://chugunov.pro/api-wordpress/functions/update_site_option/), [`__`](https://chugunov.pro/api-wordpress/functions/__/), [`apply_filters`](https://chugunov.pro/api-wordpress/functions/apply_filters/), [`get_site_option`](https://chugunov.pro/api-wordpress/functions/get_site_option/).
Используется в: [`wp_hash`](https://chugunov.pro/api-wordpress/functions/wp_hash/).

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