Чи потрібно запам’ятовувати користувача. true – збільшує час життя куків до 14 днів. За промовчанням (false) куки дійсні протягом 2-х днів. Цей параметр аналогічний галочці “запам’ятати мене” у формі авторизації.
Типово: false
$secure (логічний)
Встановлює яке ім’я куки використовувати для ssl (захищене) чи ні? береться з констант: SECURE_AUTH_COOKIE чи AUTH_COOKIE .
Типово: is_ssl()
$token (рядок)
Токен сесії, який потрібно використовувати для поточних куків. C WP 4.3.
За замовчуванням: ”
Приклади
0
#1 Авторизуємо користувача з ID 25. Приклад роботи функції:
function wp_set_auth_cookie( $user_id, $remember = false, $secure = '', $token = '' ) {
if ($remember) {
/**
* Filters duration of authentication cookie expiration period.
*
* @ Since 2.8.0
*
* @param int $length Duration of expiration period in seconds.
* @param int $user_id User ID.
* @param bool $remember Whether to remember the user login. Default false.
*/
$expiration = time() + apply_filters( 'auth_cookie_expiration', 14 * DAY_IN_SECONDS, $user_id, $remember );
/*
* Налаштування браузера буде продовжувати працювати з cookie після виходу часу is reached.
* Потрібен для логічного терміну терміну в wp_validate_auth_cookie().
*/
$expire = $expiration + (12 * HOUR_IN_SECONDS);
} else {
/** Цей filter is documented в wp-includes/pluggable.php */
$expiration = time() + apply_filters( 'auth_cookie_expiration', 2 * DAY_IN_SECONDS, $user_id, $remember );
$ Expire = 0;
}
if ( '' === $secure ) {
$secure = is_ssl();
}
// Front-end cookie is secure when the auth cookie is secure and the site's home URL uses HTTPS.
$secure_logged_in_cookie = $secure && 'https' === parse_url( get_option( 'home' ), PHP_URL_SCHEME );
/**
* Filters whether the auth cookie повинен тільки бути за допомогою HTTPS.
*
* @ Since 3.1.0
*
* @param bool $secure Whether cookie повинен тільки бути встановлений на HTTPS.
* @param int $user_id User ID.
*/
$secure = apply_filters( 'secure_auth_cookie', $secure, $user_id );
/**
* Filters whether the logged в cookie повинен тільки бути виявлений на HTTPS.
*
* @ Since 3.1.0
*
* @param bool $secure_logged_in_cookie Whether logged в cookie повинен тільки бути встановлений на HTTPS.
* @param int $user_id User ID.
* @param bool $secure Whether the auth cookie should only be sent over HTTPS.
*/
$secure_logged_in_cookie = apply_filters( 'secure_logged_in_cookie', $secure_logged_in_cookie, $user_id, $secure );
if ($ secure) {
$auth_cookie_name = SECURE_AUTH_COOKIE;
$scheme = 'secure_auth';
} else {
$auth_cookie_name = AUTH_COOKIE;
$scheme = 'auth';
}
if ( '' === $token ) {
$manager = WP_Session_Tokens::get_instance( $user_id );
$token = $manager->create($expiration);
}
$ auth_cookie = wp_generate_auth_cookie ($ user_id, $ expiration, $ scheme, $ token);
$logged_in_cookie = wp_generate_auth_cookie( $user_id, $expiration, 'logged_in', $token );
/**
* Fires immediately before the authentication cookie is set.
*
* @ Since 2.5.0
* @since 4.9.0 The `$token` parameter was added.
*
* @param string $auth_cookie Authentication cookie value.
* @param int $expire Натисніть, щоб зареєструвати строки періоду виходу як UNIX timestamp.
* Default is 12 hours past cookie's expiration time.
* @param int $expiration Час, коли authentication cookie expires as UNIX timestamp.
* Default is 14 days from now.
* @param int $user_id User ID.
* @param string $scheme Authentication scheme. Values включає 'auth' або 'secure_auth'.
* @param string $token User's session token to use for this cookie.
*/
do_action( 'set_auth_cookie', $auth_cookie, $expire, $expiration, $user_id, $scheme, $token);
/**
* Fires immediately before logged-in authentication cookie is set.
*
* @ Since 2.6.0
* @since 4.9.0 The `$token` parameter was added.
*
* @param string $logged_in_cookie Встановлено в cookie value.
* @param int $expire Натисніть, щоб зареєструвати строки періоду виходу як UNIX timestamp.
* Default is 12 hours past cookie's expiration time.
* @param int $expiration Час, коли клацнувся в authentication cookie expires as a UNIX timestamp.
* Default is 14 days from now.
* @param int $user_id User ID.
* @param string $scheme Authentication scheme. Default 'logged_in'.
* @param string $token User's session token to use for this cookie.
*/
do_action( 'set_logged_in_cookie', $logged_in_cookie, $expire, $expiration, $user_id, 'logged_in', $token);
/**
* Allows preventing auth cookies від реально being sent to the client.
*
* @ Since 4.7.4
*
* @param bool $send Whether to send auth cookies до the client.
*/
if ( ! apply_filters( 'send_auth_cookies', true ) ) {
return;
}
setcookie($auth_cookie_name, $auth_cookie, $expire, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN, $secure, true);
setcookie($auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, COOKIE_DOMAIN, $secure, true);
setcookie( LOGGED_IN_COOKIE, $logged_in_cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true );
if ( COOKIEPATH != SITECOOKIEPATH ) {
setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, SITECOOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true);
}
}