O WordPress possui um recurso incorporado para lidar com o modo de manutenção.
Quando você atualiza um plug-in ou WordPress core do painel do WP, o WordPress entra no modo de manutenção: ele tenta carregar um arquivo chamado maintenance.php
localizado na pasta de conteúdo (geralmente /wp-content
) e se esse arquivo não estiver lá , WP mostra uma mensagem padrão.
Eu sugiro que você use esse arquivo, desta forma você será consistente para sua manutenção disparada manualmente e para manutenção manipulada pelo WordPress.
Como
-
Primeiro, crie o arquivo
maintenance.php
e coloque o conteúdo desejado. Para o estilo, sugiro que você coloque CSS no próprio arquivo, usando<style>
tag; geralmente isso não é um bom conselho, mas, nesse caso, é possível usar o arquivo para o modo de manutenção manipulado pelo WordPress, quando nenhum tema é carregado (e o tema pode estar sendo atualizado, portanto, não é confiável). -
Salve o arquivo que acabou de criar na pasta de conteúdo (geralmente
/wp-content
). -
No 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 (veja o próximo ponto) e se o usuário não estiver logado, carregue o arquivo criado no ponto # 1 e saia.
Se você quiser permitir somente usuários com recursos específicos, use
current_user_can('capability_to_allow')
em vez deis_user_logged_in()
. Veja Codex para mais informações.Talvez você possa adicionar ao
maintenance.php
um link para a página de login. desta 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 infantil ; Dessa forma, você poderá atualizar o tema com segurança sem perder suas alterações.
-
Quando você quiser ativar o modo de manutenção, abra seu
wp_config.php
e coloque lá:define('IN_MAINTENANCE', true);
Depois disso, quando você estiver pronto para tornar seu site público novamente, basta remover essa linha ou alterar
true
parafalse
para facilitar a reativação.