Сессия WordPress в браузере закрывается

1

Невозможно найти четкий ответ о том, как сохранить сеансы входа в WordPress, когда пользователи закрывают браузер.

Я нашел четкое общее объяснение, почему это происходит из reko_t, но что-то (что не так много), я нахожу об этом, специфичном для WordPress, только указывает, почему сеансы WordPress с (такими) истечениями могут вызвать проблемы.

Могу ли я просто установить session.cookie_lifetime и session.gc_maxlifetime в php.ini, могу ли я использовать фильтр (например, auth_cookie_expiration), чтобы WordPress устанавливал эти значения при запуске сеанса или есть ли другой способ выполнить это, не вызывая проблем?

  • 1
    Вы можете изменить время истечения срока действия cookie с помощью auth_cookie_expiration premium.wpmudev.org/blog/…
  • 0
    @AndrewSchultz Извините за глупый вопрос тогда. Я не проверял поведение браузера при закрытии с опцией Запомнить меня. Я знал, что это продлевает срок действия до 14 дней (этого достаточно), но предполагал, что закрытие браузера будет иметь тот же эффект с или без этой опции.
Показать ещё 1 комментарий
Теги:
session-cookies

1 ответ

0

Я использовал этот код в wordpress functions.php, чтобы автоматически выйти из системы клиент/пользователь после оплаты в woocommerce или закрыть браузер

function logged_in( $expirein ) {
   return 6; // 6 in seconds
}
add_filter( 'auth_cookie_expiration', 'logged_in' );

function wp_logout2() {
    wp_destroy_current_session();
    wp_clear_auth_cookie();

    /**
     * Fires after a user is logged-out.
     *
     * @since 1.5.0
     */
    do_action( 'wp_logout2' );
}

function wpse108399_change_cookie_logout( $expiration, $user_id, $remember ){
    if( $remember && user_can( $user_id, 'administrator' ) ){
        $expiration = 604800;// yes, I know this is 1 minute
    }
    if( $remember && user_can( $user_id, 'editor' ) ){
        $expiration = 604800;// yes, I know this is 1 minute
    }
    }
    return $expiration;
}
add_filter( 'auth_cookie_expiration','wpse108399_change_cookie_logout', 10, 3 );

/**
 * Bypass logout confirmation.
 */
function iconic_bypass_logout_confirmation() {
    global $wp;

    if ( isset( $wp->query_vars['customer-logout'] ) ) {
            wp_redirect( str_replace( '&', '&', wp_logout_url( wc_get_page_permalink( 'myaccount' ) ) ) );
        exit;
    }
}

add_action( 'template_redirect', 'iconic_bypass_logout_confirmation' );

Часть этого кода предназначена для увеличения срока действия администраторов WordPress или других пользователей.

function wpse108399_change_cookie_logout( $expiration, $user_id, $remember ){
    if( $remember && user_can( $user_id, 'administrator' ) ){
        $expiration = 604800;// yes, I know this is 1 minute
    }
    if( $remember && user_can( $user_id, 'editor' ) ){
        $expiration = 604800;// yes, I know this is 1 minute
    }
    }
    return $expiration;
}
add_filter( 'auth_cookie_expiration','wpse108399_change_cookie_logout', 10, 3 );

Ещё вопросы

Сообщество Overcoder
Наверх
Меню