Es fantástico que WordPress sea multiusuario pero ¿y si alguno se vuelve loco y quiere joderte la web?
Hay multitud de situaciones en las que puede que necesites forzar la desconexión de usuarios, y en cualquier caso, especialmente en entornos corporativos, sitios de comercio electrónico y, por qué no decirlo, para prevenir ataques y hackeos, puede no ser mala idea forzar la desconexión tras un determinado periodo de tiempo.
Por defecto, WordPress no desconectará a un usuario hasta que no expire la cookie de sesión, que dura lo siguiente:
- 48 horas
- Cuando cierras el navegador completamente
- 14 días si haces clic en la casilla de «Recuérdame»
Así que si quieres forzar la desconexión de los usuarios al cabo de un tiempo tendrás que tomar medidas.
Forzar la desconexión de usuarios con código
Un modo de «echar» a todos los usuarios, digamos, cada 4 horas, sería con un código como el siguiente, que deberás añadir a tu plugin de funciones o al archivo functions.php del tema activo:
function user_update_login($login) { // la función se activa cuando un usuario se conecta global $user_ID; $user = get_userdatabylogin($login); // guarda la hora a la que se conecta el usuario update_usermeta( $user->ID, 'last_login', time() ); } add_action('wp_login','user_update_login'); function check_time_limit() { get_currentuserinfo(); global $user_ID; // solo se ejecuta si el usuario aún está conectado if($user_ID) { // revisa la hora de la conexión $last_login = get_user_meta($user_ID, 'last_login', TRUE); // si se conectó hace más de 14400 segundos (4 horas) se desconecta al usuario if(time() > ($last_login + 14400)) { wp_logout(); } } } check_time_limit();
Otro modo de forzar la desconexión es con este otro código, más sencillo pero igual de efectivo:
add_filter('auth_cookie_expiration', 'wase_85171_expiry',10,3); function wase_85171_expiry($expiry, $user_id, $remember) { return 14400; // el tiempo que quieres que pase hasta que quieras que expire, en el ejemplo 14400 segundos (4 horas) }
En ambos casos estamos forzando la desconexión después del periodo de tiempo que especifiquemos en el código.
Forzar la desconexión de usuarios con plugin
Te aviso de antemano que los plugins que he encontrado para hacer lo mismo están bastante abandonados en su desarrollo, pero en mis pruebas aún funcionan. Si es tu opción puedes elegir alguno de estos para forzar la desconexión de los usuarios.
- Idle Logout: Te permite especificar el tiempo de expiración e incluso un mensaje a los usuarios.
- Configure Login Timeout: Puedes cambiar la expiración por defecto de WordPress, con clic en «Recuérdame» o no.
Un truco adicional que casi se me olvida es quitar la casilla «Recuérdame» de la pantalla de acceso de WordPress, con lo que fuerzas a que la cookie dure un máximo de 48 horas. Si te gusta puede ser una opción.
Si sabes algún modo más nos lo cuentas en los comentarios ¿vale?
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Hola! soy nuevo en esta pagina y la verdad que he aprendido mucho en poco tiempo sobre el tema de wordpress, muchas gracias por ello, pero ahora me he quedado atascado en un punto donde no se como salir, supongo que es porque he ido trasteando muchas cosas y ahora no se que a sucedido, mi problema es el siguiente y ojalá podáis ayudarme: No se que he tocado que ahora cuando creo alguna pagina o trato de acceder a alguna sección en mi web, éste automáticamente se me redirecciona de la siguiente manera:
midominio.com/http://midominio.com/pagina-ayuda
Es un ejemplo pero en todo momento la direccion me la escribe asi :S no se como puedo solucionarlo. Gracias!!!
Hola Fernando, como estas? quedo agradecido por tu contenido. Estoy en la busqueda de un codigo o plugin que logre hacer lo siguiente: ver el plugin https://wordpress.org/plugins/user-access-expiration/ pero que a el momEnto de volver a reactivar el acceso de el usuario, vuelva a contar el mismo tiempo configurado y desactive a el usuario nuevamente por ese periodo de tiempo, y si como administrador lo vuelvo a reactivar, cuente nuevamente el tiempo de activacion, si por ejemplo es cada quince dias, pues a los quince dias lo desactive despues de haberlo activado, y asi sucesivamente y que no sea solo una sola vez que es tomando la fecha de el ingreso a el sitio. No quiero usar sofisticados plugin de Membresias, quiero un codigo sencillo como este. En el caso de uso digamos que por algun medio cuando el usuario se queda desactivado a los quince dias, debe realizar un proceso y debe comunicarmelo como administrador de el sitio y hasta tanto no realice esa comunicacion, no sera reactivado y asi pueden transcurrir algun tiempo, hasta que comunique su reactivacion sera reactivado. Quedo agradecido por su ayuda. y quedo atento. RODOLFO