wp_salt()WP 2.5.0

Получает секретный ключ (salt), который добавляется в хэш.

Секретные ключи расположены в двух местах: в базе данных и файле wp-config.php.

В wp-config.php они выглядят так:

define( 'AUTH_KEY',         't vz,|X,g3{3Qxs^4G;$ 9Tk a3}~Pw%AWRh3rlw0fzZWRuU9Pm1<YPCm#R lZ5]');
define( 'SECURE_AUTH_KEY',  '>@r&pPDKtZ%BaC@q@lk $_n<{!GYsp6c5CcM _`Fc?5c?Ye~;!Oevh/1UjdK-A%=');
define( 'LOGGED_IN_KEY',    '%6TuLl|$M`]DF[P<-n>pr}dzw6nT&Ze[VZ-+a@Xo3tKjz6+-WrN hG.q,|9>/dNE');
define( 'NONCE_KEY',        'DO(u.HCT>h|Hi:-UHKaTV2;c+_.BKA/ s=A=EO)-C}p:=k+~sd;-]t]d$?$?ja-e');
define( 'AUTH_SALT',        '|G Vo<P_7{@-gjr?sB8j`,+Q$VMMm+&S]j-R]xM^M3MAC|#]m,lud9|ES*Xeb.~y');
define( 'SECURE_AUTH_SALT', 'Y5tIYA{tOB?,6.3tv9y8C|V4l)t--BC.!@#j|F#j#V4VH&`&FBTz1>l=qA7Lxf8J');
define( 'LOGGED_IN_SALT',   'gR]>WZX ~_vY?DS+j|F+,Sdt}lG}(R6F|xlM+e~ho]KD}n1#h4)]0u|O4!<>|;YY');
define( 'NONCE_SALT',       '=]nQIb%tUJ;oPD=w$?t+/c5TbJ{[5i)](K[-9J35akCnu,pqswbc:%1e64HLT2:9');

Сгенерировать уникальные ключи можно по ссылке https://api.wordpress.org/secret-key/1.1/salt/

В базе данных секретные ключи генерируются случайно. Функция объединяет ключи из БД и из wp-config.php. и возвращает результат.

Pluggable функция — эту функцию можно заменить из плагина. Это значит, что она будет работать (подключается) только после подключения всех плагинов, а до этого момента функция еще не определена... Поэтому нельзя вызывать эту и зависящие от неё функции прямо из кода плагина. Их нужно вызывать через хук plugins_loaded или позднее, например хук init.

Замена функции (переопределение) — в must-use или обычном плагине можно создать функцию с таким же названием, тогда она заменит текущую функцию.

Хуки из функции

Возвращает

Строку. Строку, значение секретного ключа.

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

wp_salt( $scheme );
$scheme(строка)
Какой тип секретного ключа нужно получить, может быть: 'auth', 'secure_auth', 'logged_in', 'nonce'.
По умолчанию: 'auth'

Примеры

0

#1 Демонстрация работы wp_salt

$salt = wp_salt('logged_in');
echo $salt;

// выведет нечто такое:
// 0D3*SIMO4$(t~I;E]NBx}L`Vy2U8o|{vbxH4t3l-!4-Io N(U74&+BdC^S,~*0^B>k,|4/`76[PG|V:)}o$)!hh1GgZ>t8[A-rmF&RDU~|fcN1/]T7i/=H

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

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

Код wp_salt() WP 6.5.2

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(
			'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;

		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 ] );
			}
		}
	}

	$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 );
}