Para evitar que mis visitantes vean una versión defectuosa de mi sitio durante el mantenimiento, y para avisarles de las actualizaciones, me gustaría redirigirlos automáticamente a una página de mantenimiento temporal. Estoy buscando una solución portátil que se pueda usar en cualquier sitio, sin codificar URL.
Los administradores que hayan iniciado sesión (u otro nivel de usuario de elección) deben tener acceso completo al back-end y al front-end. Hay muchos complementos que ofrecen esta funcionalidad, pero estoy buscando una solución de solo código.
maintenance
Nuevo Usuario
fuente
fuente
Respuestas:
WordPress tiene una función integrada para manejar el modo de mantenimiento.
Cuando actualiza un complemento, o el núcleo de WordPress desde el panel de WP, WordPress ingresa al modo de mantenimiento: intenta cargar un archivo llamado
maintenance.php
ubicado en la carpeta de contenido (generalmente/wp-content
), y si ese archivo no está allí, WP muestra un mensaje predeterminado.Le sugiero que use ese archivo, de esta manera será consistente para su mantenimiento activado manualmente y para el mantenimiento manejado por WordPress.
Cómo
En primer lugar, cree el
maintenance.php
archivo y coloque allí el contenido que desee. Para el estilo, le sugiero que coloque CSS en el archivo mismo, usando la<style>
etiqueta; En general, este no es un buen consejo, pero en este caso le brinda la capacidad de usar el archivo para el modo de mantenimiento manejado por WordPress, cuando no se carga ningún tema (y el tema puede estar actualizando, por lo que no es confiable).Guarde el archivo recién creado en la carpeta de contenido (generalmente
/wp-content
).En tu
functions.php
puesto:Este código verificará una constante (vea el siguiente punto) y si el usuario no está conectado, cargue el archivo creado en el punto # 1 y salga.
Si desea permitir solo usuarios con capacidades específicas, use en
current_user_can('capability_to_allow')
lugar deis_user_logged_in()
. Ver Codex para más información.Tal vez pueda agregar a
maintenance.php
un enlace a la página de inicio de sesión; de esta manera, un usuario no registrado puede hacer clic en él sin tener que ingresar manualmente la URL de inicio de sesión en la barra de direcciones.Si está utilizando un tema desarrollado por un tercero, use un tema secundario ; De esta forma, podrá actualizar de forma segura el tema sin perder los cambios.
Cuando desee habilitar el modo de mantenimiento, abra su
wp_config.php
y coloque allí:Después de eso, cuando esté listo para hacer su sitio de nuevo público, basta con retirar esa línea o el cambio
true
afalse
de más fácil volver a habilitar.fuente
define('WP_CONTENT_DIR','/url/to/define/');
suwp-config.php
archivo.La respuesta anterior está completa y bien escrita. De todos modos, si eres como yo y quieres tener todo en un solo lugar, puedes colocar las siguientes líneas en el
function.php
archivo y crear unmaintenance.php
archivo en tu directorio de temas.Esto es especialmente útil si su repositorio de Git apunta solo al directorio del tema.
Notas
Cambié el encabezado a
header('HTTP/1.1 503 Service Temporarily Unavailable');
como el anterior no funcionó para mí.fuente