O WordPress possui um recurso incorporado para lidar com o modo de manutenção.
Quando você atualiza um plugin ou núcleo do WordPress a partir do painel do WP, o WordPress entra no modo de manutenção: ele tenta carregar um arquivo nomeado maintenance.php
localizado na pasta de conteúdo (geralmente /wp-content
) e, se esse arquivo não estiver lá, o WP mostra uma mensagem padrão.
Eu sugiro que você use esse arquivo, assim você será consistente para a manutenção acionada manualmente e para a manutenção manipulada pelo WordPress.
Primeiro, crie o maintenance.php
arquivo e coloque lá o conteúdo que você deseja. Para estilizar, sugiro que você coloque CSS no próprio arquivo, usando <style>
tag; Geralmente, esse não é um bom conselho, mas, nesse caso, oferece a capacidade de usar o arquivo no modo de manutenção gerenciada pelo WordPress, quando nenhum tema é carregado (e o tema pode estar sendo atualizado, portanto, não é confiável).
Salve o arquivo recém-criado na pasta de conteúdo (normalmente /wp-content
).
Em seu functions.php
put:
add_action( 'wp_loaded', function() {
global $pagenow;
if(
defined( 'IN_MAINTENANCE' )
&& IN_MAINTENANCE
&& $pagenow !== 'wp-login.php'
&& ! is_user_logged_in()
) {
header( 'HTTP/1.1 Service Unavailable', true, 503 );
header( 'Content-Type: text/html; charset=utf-8' );
header( 'Retry-After: 3600' );
if ( file_exists( WP_CONTENT_DIR . '/maintenance.php' ) ) {
require_once( WP_CONTENT_DIR . '/maintenance.php' );
}
die();
}
});
Este código verificará uma constante (consulte o próximo ponto) e, se o usuário não estiver logado, carregue o arquivo criado no ponto 1 e saia.
Se você deseja permitir apenas usuários com recursos específicos, use em current_user_can('capability_to_allow')
vez de is_user_logged_in()
. Veja Codex para mais informações.
Talvez você possa adicionar a maintenance.php
um link à página de login; dessa forma, um usuário não logado pode clicar nele sem ter que inserir manualmente o URL de login na barra de endereço.
Se você estiver usando um tema desenvolvido por terceiros, use um tema filho ; Dessa forma, você poderá atualizar o tema com segurança sem perder suas alterações.
Quando você deseja ativar o modo de manutenção, abra o seu wp_config.php
e coloque lá:
define('IN_MAINTENANCE', true);
Depois disso, quando você está pronto para fazer o seu site público novamente, basta remover essa linha ou mudança true
para false
a fácil re-habilitação.