# wp_signon()

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

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

## Сигнатура

```php
wp_signon( array $credentials = array(), string|bool $secure_cookie = '' ): WP_User|WP_Error
```

## Описание

Учётные данные — это массив с индексами 'user_login', 'user_password' и 'remember'. Если учётные данные не переданы, будет предполагаться форма входа и использована, если она задана.
Различные cookie аутентификации будут установлены этой функцией на более длительный период, если учётные данные 'remember' установлены в true.
Примечание: wp_signon() не устанавливает текущего пользователя. Это означает, что если функция вызывается до срабатывания хука 'init', is_user_logged_in() будет возвращать false до этого момента. Если is_user_logged_in() требуется вместе с wp_signon() , необходимо явно вызвать wp_set_current_user() .

## Параметры

- `$credentials` `array` — необязательный, по умолчанию `array()`. Информация о пользователе для входа.
  
  user_login stringИмя пользователя.
  
  user_password stringПароль пользователя.
  
  remember boolНужно ли «запомнить» пользователя. Увеличивает время хранения cookie. По умолчанию false.
- `$secure_cookie` `string|bool` — необязательный, по умолчанию `''`. Использовать ли защищённый cookie.

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

`WP_User|WP_Error` — WP_User WP_Error

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

Файл: `wp-includes/user.php:41`

```php
function wp_signon( $credentials = array(), $secure_cookie = '' ) {
	global $auth_secure_cookie, $wpdb;

	if ( empty( $credentials ) ) {
		$credentials = array(
			'user_login'    => '',
			'user_password' => '',
			'remember'      => false,
		);

		if ( ! empty( $_POST['log'] ) && is_string( $_POST['log'] ) ) {
			$credentials['user_login'] = wp_unslash( $_POST['log'] );
		}
		if ( ! empty( $_POST['pwd'] ) && is_string( $_POST['pwd'] ) ) {
			$credentials['user_password'] = $_POST['pwd'];
		}
		if ( ! empty( $_POST['rememberme'] ) ) {
			$credentials['remember'] = $_POST['rememberme'];
		}
	}

	if ( ! empty( $credentials['remember'] ) ) {
		$credentials['remember'] = true;
	} else {
		$credentials['remember'] = false;
	}

	/**
	 * Fires before the user is authenticated.
	 *
	 * The variables passed to the callbacks are passed by reference,
	 * and can be modified by callback functions.
	 *
	 * @since 1.5.1
	 *
	 * @todo Decide whether to deprecate the wp_authenticate action.
	 *
	 * @param string $user_login    Username (passed by reference).
	 * @param string $user_password User password (passed by reference).
	 */
	do_action_ref_array( 'wp_authenticate', array( &$credentials['user_login'], &$credentials['user_password'] ) );

	if ( '' === $secure_cookie ) {
		$secure_cookie = is_ssl();
	}

	/**
	 * Filters whether to use a secure sign-on cookie.
	 *
	 * @since 3.1.0
	 *
	 * @param bool  $secure_cookie Whether to use a secure sign-on cookie.
	 * @param array $credentials {
	 *     Array of entered sign-on data.
	 *
	 *     @type string $user_login    Username.
	 *     @type string $user_password Password entered.
	 *     @type bool   $remember      Whether to 'remember' the user. Increases the time
	 *                                 that the cookie will be kept. Default false.
	 * }
	 */
	$secure_cookie = apply_filters( 'secure_signon_cookie', $secure_cookie, $credentials );

	// XXX ugly hack to pass this to wp_authenticate_cookie().
	$auth_secure_cookie = $secure_cookie;

	add_filter( 'authenticate', 'wp_authenticate_cookie', 30, 3 );

	$user = wp_authenticate( $credentials['user_login'], $credentials['user_password'] );

	if ( is_wp_error( $user ) ) {
		return $user;
	}

	wp_set_auth_cookie( $user->ID, $credentials['remember'], $secure_cookie );

	// Clear `user_activation_key` after a successful login.
	if ( ! empty( $user->user_activation_key ) ) {
		$wpdb->update(
			$wpdb->users,
			array(
				'user_activation_key' => '',
			),
			array( 'ID' => $user->ID )
		);

		$user->user_activation_key = '';
	}

	/**
	 * Fires after the user has successfully logged in.
	 *
	 * @since 1.5.0
	 *
	 * @param string  $user_login Username.
	 * @param WP_User $user       WP_User object of the logged-in user.
	 */
	do_action( 'wp_login', $user->user_login, $user );

	return $user;
}
```

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

- 2.5.0 — Introduced.

## Связанные

Использует: [`wp_set_auth_cookie`](https://chugunov.pro/api-wordpress/functions/wp_set_auth_cookie/), [`wp_authenticate`](https://chugunov.pro/api-wordpress/functions/wp_authenticate/), [`is_ssl`](https://chugunov.pro/api-wordpress/functions/is_ssl/), [`do_action_ref_array`](https://chugunov.pro/api-wordpress/functions/do_action_ref_array/), `wpdb::update`, [`wp_unslash`](https://chugunov.pro/api-wordpress/functions/wp_unslash/), [`apply_filters`](https://chugunov.pro/api-wordpress/functions/apply_filters/), [`add_filter`](https://chugunov.pro/api-wordpress/functions/add_filter/), [`do_action`](https://chugunov.pro/api-wordpress/functions/do_action/), [`is_wp_error`](https://chugunov.pro/api-wordpress/functions/is_wp_error/).

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