Este snippet intercepta las peticiones en el frontend mediante el hook template_redirect y muestra una pantalla limpia de «Próximamente» o «Mantenimiento». Permite el acceso total a administradores logueados o a direcciones IP específicas (por ejemplo, para que un cliente o diseñador externo pueda revisar los cambios sin necesidad de crear una cuenta en el sitio).
Puedes utilizar este sencillo snippet en php desde el archivo functions.php.
Importante: no modifiques directamente el archivo functions.php del tema que tengas instalado. Genera un tema hijo con alguno de los plugins del repositorio de WordPress y actívalo. Cuando lo tengas, entra en el functions.php del tema hijo. Una alternativa es instalar algún plugin que permite incrustar código sin problema de pérdida en la actualización del tema.
/**
* Modo Mantenimiento / Próximamente ligero con lista blanca de IP
*/
add_action( 'template_redirect', 'lc_custom_maintenance_mode' );
function lc_custom_maintenance_mode() {
// 1. IPs autorizadas (añade las necesarias)
$allowed_ips = array(
'127.0.0.1',
'::1',
);
$user_ip = isset( $_SERVER['REMOTE_ADDR'] ) ? sanitize_text_field( $_SERVER['REMOTE_ADDR'] ) : '';
// 2. Permitir acceso a administradores o IPs en lista blanca
if ( current_user_can( 'edit_posts' ) || in_array( $user_ip, $allowed_ips, true ) ) {
return;
}
// 3. Cabecera HTTP 503 para SEO
if ( ! headers_sent() ) {
status_header( 503 );
nocache_headers();
header( 'Retry-After: 3600' );
}
// 4. Salida limpia usando wp_die() de WordPress (evita romper plantillas ni bloques)
$site_title = get_bloginfo( 'name' );
$message = '' . esc_html( $site_title ) . '
';
$message .= 'Estamos realizando mejoras en nuestra plataforma. Volveremos a estar disponibles muy pronto.
';
$args = array(
'response' => 503,
'back_link' => false,
);
wp_die( $message, 'Próximamente', $args );
}
Seguridad SEO (503 Service Unavailable): Informa correctamente a Google y otros rastreadores que la interrupción es temporal mediante las cabeceras HTTP y Retry-After, evitando que desindexen la página mientras trabajas.
Sin conflictos con Gutenberg/Panel de Control: Al actuar sobre template_redirect, el panel de administración (/wp-admin/) y las llamadas AJAX internas siguen funcionando con total normalidad.
Sin carga adicional: Ocupa menos de 2 KB, no añade peticiones a la base de datos ni carga librerías pesadas.