# wp_check_password()

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

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

## Сигнатура

```php
wp_check_password( string $password, string $hash, string|int $user_id = '' ): bool
```

## Описание

Учтите, что эта функция может использоваться для проверки значения, которое не является паролем пользователя.
Плагин может применять её для проверки пароля другого типа, и с паролем не всегда связан идентификатор пользователя.
Для интеграции с другими приложениями эту функцию можно переопределить, чтобы использовать алгоритм хеширования паролей из другого пакета.

## Параметры

- `$password` `string` — обязательный. Пароль в виде открытого текста.
- `$hash` `string` — обязательный. Хеш пароля, с которым выполняется сверка.
- `$user_id` `string|int` — необязательный, по умолчанию `''`. Идентификатор пользователя, связанного с паролем.

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

`bool`

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

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

```php
function wp_check_password(
	#[\SensitiveParameter]
	$password,
	$hash,
	$user_id = ''
) {
	global $wp_hasher;

	if ( strlen( $hash ) <= 32 ) {
		// Check the hash using md5 regardless of the current hashing mechanism.
		$check = hash_equals( $hash, md5( $password ) );
	} elseif ( ! empty( $wp_hasher ) ) {
		// Check the password using the overridden hasher.
		$check = $wp_hasher->CheckPassword( $password, $hash );
	} elseif ( strlen( $password ) > 4096 ) {
		// Passwords longer than 4096 characters are not supported.
		$check = false;
	} elseif ( str_starts_with( $hash, '$wp' ) ) {
		// Check the password using the current prefixed hash.
		$password_to_verify = base64_encode( hash_hmac( 'sha384', $password, 'wp-sha384', true ) );
		$check              = password_verify( $password_to_verify, substr( $hash, 3 ) );
	} elseif ( str_starts_with( $hash, '$P$' ) ) {
		// Check the password using phpass.
		require_once ABSPATH . WPINC . '/class-phpass.php';
		$check = ( new PasswordHash( 8, true ) )->CheckPassword( $password, $hash );
	} else {
		// Check the password using compat support for any non-prefixed hash.
		$check = password_verify( $password, $hash );
	}

	/**
	 * Filters whether the plaintext password matches the hashed password.
	 *
	 * @since 2.5.0
	 * @since 6.8.0 Passwords are now hashed with bcrypt by default.
	 *              Old passwords may still be hashed with phpass or md5.
	 *
	 * @param bool       $check    Whether the passwords match.
	 * @param string     $password The plaintext password.
	 * @param string     $hash     The hashed password.
	 * @param string|int $user_id  Optional ID of a user associated with the password.
	 *                             Can be empty.
	 */
	return apply_filters( 'check_password', $check, $password, $hash, $user_id );
}
```

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

- 6.8.0 — Passwords in WordPress are now hashed with bcrypt by default. A password that wasn’t hashed with bcrypt will be checked with phpass.
- 2.5.0 — Introduced.

## Связанные

Использует: [`apply_filters`](https://chugunov.pro/api-wordpress/functions/apply_filters/).
Используется в: `WP_Application_Passwords::check_password`, [`wp_authenticate_email_password`](https://chugunov.pro/api-wordpress/functions/wp_authenticate_email_password/), [`wp_authenticate_username_password`](https://chugunov.pro/api-wordpress/functions/wp_authenticate_username_password/).

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