Modo mantenimiento WordPress con o sin plugin

[…]


por

Si necesitamos hacer algún cambio o actualización de código en nuestro WordPress y poner la web en modo mantenimiento durante poco rato y no queremos tener que instalar un plugin para ello, podemos utilizar una función, en un snippet por ejemplo, y activarla y desactivarla rápidamente desde nuestro escritorio.

La función a utilizar podría ser la siguiente:

function dpw_maintenace_mode() {
 if ( !current_user_can( 'edit_themes' ) || !is_user_logged_in() ) {
 die('Estamos de pruebas, no tardes en volver que enseguida terminamos.');
 }
 }
 add_action('get_header', 'dpw_maintenace_mode');

De esta forma podemos personalizar también el texto que aparece en la web.

También podemos, en lugar de mostrar un mensaje, redireccionar a una página en concreto de nuestra web que nos interese:

function esl_maintenance_mode(){
    if(!is_page('mantenimiento') && !is_user_logged_in()){
        wp_redirect(home_url() . '/mantenimiento/');
    }
}
add_action('get_header', 'esl_maintenance_mode');

(En este caso, ‘mantenimiento’ es el nombre de la página a la que queremos redireccionar).

Si el tiempo que van a llevar los cambios va a ser más largo o no queremos tocar código, entonces si aconsejo utilizar un plugin, de esta forma el diseño y contenido de nuestra página de mantenimiento será mucho más atractivo y podremos añadir los datos de contacto, cuenta atrás, captura de datos (para que le avisemos en cuanto estemos activos, por ejemplo), etc…

Aunque hay muchísimos plugins para hacerlo, yo acostumbro a utilizar Maintenance, que tiene todas las opciones que acostumbro a utilizar.

manteninmiento en WordPress

Bloquear el acceso a la web por IP

Por último, si necesitamos poder acceder nosotros a la web para ajustes o modificaciones pero no queremos que la web esté abierta al público, ya sea WordPress o no, podemos bloquear mediante el archivo .htaccess del servidor el acceso a todos según la IP y redirigir todas las visitas a un archivo .html creado por nosotros.

Para ello, tenemos que editar el archivo .htaccess y añadir este código (Ojo que es un archivo muy delicado y cualquier cambio incorrecto en él puede hacer fallar todo nuestro sitio web)

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^12.345.678.91
RewriteCond %{REQUEST_URI} !/mantenimiento.htm$ [NC]
RewriteCond %{REQUEST_URI} !.(jpe?g?|png|gif|css|js) [NC]
RewriteRule .* /mantenimiento.htm [R=302,L]
</IfModule>

El número en negrita es el que tendríamos que sustituir «12.345.678.91» por nuestra IP externa (si no la sabemos podemos buscar «cual es mi IP» directamente en Google y nos saldrá, y el archivo mantenimiento.htm, o con el nombre que queramos, crearlo y subirlo por FTP a nuestro servidor.

Por último, para comprobar si funciona correctamente, podemos probar de acceder desde otra ubicación o desde un dispositivo móvil con 3G, por ejemplo, y nos deberá salir la página en mantenimiento.