Muchas veces, al actualizar un plugin, un tema o WordPress, veremos el mensaje “Activando el mantenimiento.”. Pero, ¿que significa esto? ¿que mantenimiento es ese? Sí, habéis intuido bien, WordPress tiene un modo de mantenimiento que posiblemente desconocieseis.
Funcionamiento
Empecemos creando un archivo llamado .maintenance en el directorio raíz de WordPress. Nótese el punto antes de nombre de archivo, como el de .htaccess
. Dentro del archivo escribiremos lo siguiente:
<?php $upgrading = time(); ?>
En la página wp-settings.php
se comprobarán dos cosas:
- La existencia del archivo
.maintenance
. - La declaración de
$upgrading
en este mismo archivo y que, en caso de existir, el tiempo actual menos el de la variable sea menor a 10 minutos.
Partiendo de aquí coincidiremos en que time() - time() == 0
, por tanto el tiempo siempre será menor a 10 minutos, y el mantenimiento durará hasta que eliminemos el archivo.
Pongamos que queremos que el mantenimiento dure x
tiempo: pondremos el número en formato timestamp
de la fecha en la que queremos que se acabe el mantenimiento.
<?php $upgrading = 1344273522; ?>
Editando la página de error
Una vez que wp-settings.php
determine si se debe activar o no el mantenimiento, buscará el archivo maintenance.php
en el directorio wp-content/
. El contenido por defecto del archivo es el siguiente:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Mantenimiento</title> </head> <body> <h1>No disponible por mantenimiento programado. Vuelve a comprobar el sitio en unos minutos.</h1> </body> </html>
Nota: puede que este archivo no exista, a pesar de mostrar el contenido descrito arriba. No os preocupeis, añadirlo vosotros y el contenido se reemplazará.
Limitar el acceso a usuarios registrados
Es común que estemos en proceso de actualización o desarrollo de nuestra web y solo nosotros queramos poder acceder a la misma. En este caso, tendremos que tener en cuenta lo siguiente:
- Los usuarios registrados podrán acceder a todas las secciones. Es decir, tendremos que comprobar las cookies para ver si el usuario esta autentificado.
- La página de inicio de sesión deberá quedar libre para que se nos de la opción de autentificarnos. Opcionalmente el panel de administración también ya que nos redirigira en caso de no estar autentificados.
A continuación en código a pegar en el archivo .maintenance
.
<?php function is_logged_in() { $loggedin = false; foreach ( (array)$_COOKIE as $cookie => $value ) { if ( stristr( $cookie, 'wordpress_logged_in_' ) ) { $loggedin = true; break; } } return $loggedin; } if ( ! stristr( $_SERVER['REQUEST_URI'], '/wp-admin' ) && ! stristr( $_SERVER['REQUEST_URI'], '/wp-login.php' ) && ! is_logged_in() ) { $upgrading = time(); } ?>
Nota: Puede que este código sea fácilmente ignorable creando una cookie manualmente, aún así, creo que cumple su próposito, teniendo en cuenta que no tenemos acceso a las demás funciones de WordPress.
Y hasta aquí este pequeño secretillo de WordPress. ¿Conoceis algo que tenga que ver con el mantenimiento? No dudéis en comentar.