Modo de mantenimiento en WordPress sin Plugin

¿Que pasa si quiero deshabilitar mi página mientras hago cambios? ¿Tengo que utilizar un plugin? Te sorprenderá saber que WordPress tiene un modo de mantenimiento integrado, veamos cómo funciona.

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:

  1. La existencia del archivo .maintenance.
  2. 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:

  1. Los usuarios registrados podrán acceder a todas las secciones. Es decir, tendremos que comprobar las cookies para ver si el usuario esta autentificado.
  2. 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.

comments powered by Disqus