Невозможно найти четкий ответ о том, как сохранить сеансы входа в WordPress, когда пользователи закрывают браузер.
Я нашел четкое общее объяснение, почему это происходит из reko_t, но что-то (что не так много), я нахожу об этом, специфичном для WordPress, только указывает, почему сеансы WordPress с (такими) истечениями могут вызвать проблемы.
Могу ли я просто установить session.cookie_lifetime и session.gc_maxlifetime в php.ini, могу ли я использовать фильтр (например, auth_cookie_expiration), чтобы WordPress устанавливал эти значения при запуске сеанса или есть ли другой способ выполнить это, не вызывая проблем?
Я использовал этот код в 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 );