# wp_authenticate()

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

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

## Сигнатура

```php
wp_authenticate( string $username, string $password ): WP_User|WP_Error
```

## Описание

Аутентифицирует пользователя, подтверждая, что учётные данные для входа верны.

## Параметры

- `$username` `string` — обязательный. Имя пользователя или адрес электронной почты.
- `$password` `string` — обязательный. Пароль пользователя.

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

`WP_User|WP_Error` — WP_User WP_Error

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

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

```php
function wp_authenticate(
	$username,
	#[\SensitiveParameter]
	$password
) {
	$username = sanitize_user( $username );
	$password = trim( $password );

	/**
	 * Filters whether a set of user login credentials are valid.
	 *
	 * A WP_User object is returned if the credentials authenticate a user.
	 * WP_Error or null otherwise.
	 *
	 * @since 2.8.0
	 * @since 4.5.0 `$username` now accepts an email address.
	 *
	 * @param null|WP_User|WP_Error $user     WP_User if the user is authenticated.
	 *                                        WP_Error or null otherwise.
	 * @param string                $username Username or email address.
	 * @param string                $password User password.
	 */
	$user = apply_filters( 'authenticate', null, $username, $password );

	if ( null === $user || false === $user ) {
		/*
		 * TODO: What should the error message be? (Or would these even happen?)
		 * Only needed if all authentication handlers fail to return anything.
		 */
		$user = new WP_Error( 'authentication_failed', __( '<strong>Error:</strong> Invalid username, email address or incorrect password.' ) );
	}

	$ignore_codes = array( 'empty_username', 'empty_password' );

	if ( is_wp_error( $user ) && ! in_array( $user->get_error_code(), $ignore_codes, true ) ) {
		$error = $user;

		/**
		 * Fires after a user login has failed.
		 *
		 * @since 2.5.0
		 * @since 4.5.0 The value of `$username` can now be an email address.
		 * @since 5.4.0 The `$error` parameter was added.
		 *
		 * @param string   $username Username or email address.
		 * @param WP_Error $error    A WP_Error object with the authentication failure details.
		 */
		do_action( 'wp_login_failed', $username, $error );
	}

	return $user;
}
```

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

- 4.5.0 — $username now accepts an email address.
- 2.5.0 — Introduced.

## Связанные

Использует: [`sanitize_user`](https://chugunov.pro/api-wordpress/functions/sanitize_user/), [`__`](https://chugunov.pro/api-wordpress/functions/__/), [`apply_filters`](https://chugunov.pro/api-wordpress/functions/apply_filters/), [`do_action`](https://chugunov.pro/api-wordpress/functions/do_action/), [`is_wp_error`](https://chugunov.pro/api-wordpress/functions/is_wp_error/), `WP_Error::__construct`.
Используется в: [`user_pass_ok`](https://chugunov.pro/api-wordpress/functions/user_pass_ok/), [`wp_signon`](https://chugunov.pro/api-wordpress/functions/wp_signon/), [`wp_login`](https://chugunov.pro/api-wordpress/functions/wp_login/), `wp_xmlrpc_server::login`.

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