Quando se trata de segurança, sabemos como é importante atualizar regularmente as instalações do WordPress (núcleo, temas e plugins), e quanto tempo o processo de atualização pode levar para nós, especialmente quando temos instalado um bom número de plugins. É comumente recomendado seguir estes passos:

  1. Arquivos de backup e tabelas de banco de dados
  2. Desativar plugins
  3. Atualização
  4. Habilitar plugins um a um
  5. Confira o site

Pode ser uma tarefa tediosa para um único website, e pode ser um trabalho aborrecido e complexo quando temos de atualizar cinco, dez ou mais websites.

Com o objetivo específico de melhorar a segurança da instalação e facilitar a administração do site, o WordPress 3.7 introduziu atualizações automáticas. Por padrão, este recurso legal é habilitado para versões menores (ou seja, versões de manutenção e segurança) e arquivos de tradução, mas é possível personalizar qualquer tipo de atualização. Então, neste post, veremos como automatizar o processo de atualização a qualquer momento quando uma nova versão do núcleo, tema ou plugin do WordPress for lançada. Vamos mergulhar fundo nas atualizações automáticas do WordPress!

Atualizações automáticas do WordPress

Atualizações automáticas do WordPress

Índice de Atualizações Automáticas

Atualizações automáticas do WordPress

Existem quatro tipologias de atualizações e atualizações automáticas do WordPress:

  1. Principais atualizações
  2. Atualizações de plugins
  3. Atualizações temáticas
  4. Atualizações de arquivos de tradução

As atualizações do núcleo estão divididas em três subtipologias:

  1. Desenvolvimento do núcleo (apenas disponível para instalações de desenvolvimento)
  2. Atualizações menores do núcleo (manutenção e segurança) – ativadas por padrão em instalações estáveis
  3. Principais atualizações do núcleo

O WordPress permite que você automatize o processo de atualização para qualquer uma destas tipologias fornecendo duas constantes wp-config.php e um bom número de filtros API.

Controle de atualizações de fundo através do wp-config.php

O WordPress fornece um par de constantes wp-config.php que nos permitem controlar as atualizações automáticas. Definir AUTOMATIC_UPDATER_DISABLED para true irá desabilitar qualquer tipo de atualização automática:

define( 'AUTOMATIC_UPDATER_DISABLED', true );

WP_AUTO_UPDATE_CORE permite-nos controlar as atualizações do núcleo (lançamentos menores, maiores e de desenvolvimento). Esta constante pode ser definida da seguinte forma:

# Disables all core updates:
define( 'WP_AUTO_UPDATE_CORE', false );

# Enables all core updates, including minor and major:
define( 'WP_AUTO_UPDATE_CORE', true );

# Enables minor updates:
define( 'WP_AUTO_UPDATE_CORE', 'minor' );

Em instalações de desenvolvimento WP_AUTO_UPDATE_CORE é o padrão verdadeiro. Em instalações estáveis, o padrão é menor.

Por uma questão de exaustividade, devo mencionar uma constante adicional que pode ser definida para desativar as atualizações automáticas. No entanto, definir o seu valor como verdadeiro irá desativar qualquer edição de ficheiros, mesmo temas e instalações de plugins e atualizações manuais.

define( 'DISALLOW_FILE_MODS', true );

Ao invés disso, você pode preferir definir a constante DISALLOW_FILE_EDITS, que desabilitaria o editor de arquivos, mas mantendo seguras as funcionalidades de instalação e atualização.

Tutorial relacionado: wp-config.php File – An In-Depth View on How to Configure WordPress

Controle de Atualizações de Fundo através de Filtros API

As constantes de configuração fornecem uma forma geral de ativar ou desativar as atualizações automáticas. Mas o WordPress fornece uma série de filtros que garantem um controle mais profundo sobre qualquer tipo de atualização.

Nota: Os filtros devem ser usados dentro de plugins, e “deve usar plugins” são uma boa opção para atualizações de fundo. mu-plugins residem em uma pasta específica dentro do conteúdo /wp-content e são automaticamente habilitados pelo WordPress. Estes plugins não aparecem na Tela de Plugins do WordPress, portanto eles não poderiam ser desativados ou removidos acidentalmente pelos administradores do site. Para uma visão mais profunda, consulte a documentação do Codex

Primeiro, retornar verdadeiro através do filtro automático_updater_disabled tem o mesmo efeito que definir a constante AUTOMÁTICA_UPDATER_DISABLED para verdadeiro em wp-config.php:

add_filter( 'automatic_updater_disabled', '__return_true' );

Podemos controlar qualquer uma das tipologias de atualização através dos filtros auto_update_$type que ativam ou desativam as atualizações dependendo do valor do $type ('core', 'plugin', 'theme' ou 'translation').

Assim, podemos automatizar todas as atualizações do núcleo, retornando verdadeiro através do filtro auto_update_core:

add_filter( 'auto_update_core', '__return_true' );

No exemplo a seguir, estamos ativando atualizações automáticas para temas, plugins e traduções:

add_filter( 'auto_update_theme', '__return_true' );
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_translation', '__return_true' );

Nos exemplos acima, acabámos de ativar as atualizações automáticas. Mas estes filtros dão-nos um maior controlo sobre as atualizações. No exemplo a seguir estamos automatizando as atualizações automáticas para dois plugins específicos:

function cb_auto_update_plugins ( $update, $item ) {
	$plugins = array ( 'hello', 'akismet' );
	if ( in_array( $item->slug, $plugins ) ) {
		// update plugin
		return true; 
	} else {
		// use default settings
		return $update; 
	}
}
add_filter( 'auto_update_plugin', 'cb_auto_update_plugins', 10, 2 );

A função de chamada de retorno mantém dois argumentos:

  1. $update: um booleano que define se deve ser atualizado ou não;
  2. $item: o objeto da oferta de atualização.

A função verifica se o item a ser atualizado está no array $plugins, então retorna verdadeiro ou falso de acordo.

Por último, podemos fazer a diferença entre desenvolvimento, pequenas e grandes atualizações, retornando true ou false através dos seguintes filtros:

add_filter( 'allow_dev_auto_core_updates', '__return_false' );
add_filter( 'allow_minor_auto_core_updates', '__return_true' );
add_filter( 'allow_major_auto_core_updates', '__return_true' );

Sabemos que, ocasionalmente, uma atualização pode falhar. No pior dos casos, o site pode cair após uma falha de atualização. Mas, felizmente, podemos pedir ao WordPress para nos notificar com um e-mail após qualquer atualização (ou tentativa).

Resultado, Notificação e Depuração de E-mails

Dependendo do resultado do processo de atualização, o WordPress envia um e-mail diferente para o endereço do administrador:

Sempre que uma atualização automática tiver sucesso ou falhar, o WordPress envia um e-mail de resultado ou notificação com um dos seguintes assuntos:

O filtro auto_core_update_send_send_mail controla os e-mails de resultado e de notificação. Estes e-mails podem ser desativados devolvendo false como se segue:

apply_filters( 'auto_core_update_send_email', '__return_false' );

Especialmente se você estiver planejando estender as atualizações automáticas às principais versões do núcleo e/ou tema e plugins, você pode preferir deixar os e-mails de resultado e notificação ativados ou personalizá-los dependendo do resultado ou da tipologia de atualização. No exemplo a seguir o WordPress não enviará o e-mail de resultado em caso de sucesso:

Lutando com tempo de inatividade e problemas no WordPress? Kinsta é a solução de hospedagem projetada para economizar seu tempo! Confira nossos recursos
function cb_auto_core_update_send_email ( $send, $type, $core_update, $result ) {
	if ( !empty( $type ) && $type == 'success' ) {
		// don't send email
		return false; 
	}
		// use default settings
		return $send; 
	}
}
add_filter( 'auto_core_update_send_email', 'cb_auto_core_update_send_email', 10, 4 );

A função de chamada de retorno mantém os seguintes argumentos:

Por padrão, os administradores são notificados quando a oferta de atualização recebida do WordPress.org define uma determinada bandeira e a instalação é incapaz de atualizar. O e-mail de notificação será enviado apenas uma vez por lançamento. O filtro send_core_update_notification_email permite alguma discrição sobre se e quando enviar este tipo de notificações. Aplique o filtro da seguinte forma:

apply_filters( 'send_core_update_notification_email', '__return_true' );

Finalmente, o filtro automatic_updates_send_debug_email controla os e-mails de depuração, que fornecem informações de registo úteis sobre as atualizações efetuadas. Por padrão, estes e-mails são enviados por instalações de desenvolvimento. O retorno de e-mails falsos impedirá que o WordPress envie e-mails de depuração, enquanto o retorno de e-mails verdadeiros permitirá que esses e-mails sejam enviados mesmo em instalações estáveis:

apply_filters( 'automatic_updates_send_debug_email', '__return_true' );

Quando e porquê desativar as atualizações automáticas do WordPress

O processo de atualização automática é uma ótima característica para muitos usuários, pois eles podem economizar muito tempo e trabalho.
Mas mesmo que pareça que as atualizações automáticas são realmente seguras, devemos nos perguntar se é sempre uma boa idéia habilitar todas elas.

Ocasionalmente, podemos ter problemas de incompatibilidade em temas e plugins que podem interromper algumas funcionalidades ou até quebrar o site. Se o site depende de um bom número de plugins, pode ser mais seguro realizar atualizações manuais, pelo menos para plugins. O processo um a um permite-nos detectar rapidamente problemas que a automação tornaria difícil de encontrar.

Além disso, se você é um desenvolvedor, você deve ter cuidado com os nomes que escolher para seus temas e plugins, mesmo que você não esteja planejando distribuí-los. Ao executar atualizações, o WordPress procura no diretório de plugins por novas versões de seus plugins e sobrescreve seus arquivos se for encontrado um plugin com o mesmo nome. Portanto, se você pensa em habilitar atualizações de fundo para temas e plugins, certifique-se de definir nomes únicos para seus scripts.

Sim, isso é muito bom para os desenvolvedores. Mas como é que um utilizador não desenvolvedor pode gerir atualizações automáticas?

Controle as Atualizações Automáticas do WordPress com Plugins

Se você não é um desenvolvedor, você pode controlar as atualizações automáticas do WordPress usando um plugin.

O Easy Updates Manager permite aos utilizadores administrativos controlarem as atualizações do WordPress tanto nas instalações de um único site como nas instalações de vários sites. O plugin permite gerenciar todas as tipologias de atualizações do WordPress, e Temas e plugins podem ser selecionados individualmente para atualizações automáticas. Recursos adicionais relacionados a e-mails de notificação, bloqueio de usuários e atualizações de plugins de registro.

Easy Updates Manager

Easy Updates Manager

Em caso de incompatibilidade, pode ser necessário reverter rapidamente para uma versão anterior de um tema ou plugin. WP Rollback permite restaurar uma versão anterior de quaisquer temas e plugins instalados a partir da tela Plugins. Basta clicar no link Rollback e o plugin irá mostrar uma lista de todas as versões disponíveis.
Infelizmente, WP Rollback não será de ajuda se o seu site cair, por isso não se esqueça de fazer backup e ler cuidadosamente a documentação online.

WP Rollback

WP Rollback

Finalmente, se você precisar de um teste de compatibilidade em atualizações automáticas em sua instalação do WordPress, o Testador de Atualizações em Fundo fornecerá as informações necessárias.

Atualizações Automáticas para Plugins e Temas Premium

Como desenvolvedor de plugins ou temas WordPress premium, é seu dever integrar um mecanismo de atualizações automáticas em seus produtos para oferecer a mesma experiência de atualização contínua que os usuários esperam com os produtos WordPress.org. Isso se tornou o padrão do mercado atual (por uma boa razão). Você mesmo pode hospedar os produtos premium e desenvolver um mecanismo de atualizações, ou aproveitar plataformas como Freemius, Kernl, ou WP Updates, que oferecem um repositório seguro e atualizações automáticas como um serviço, out-of-the-box.

Resumo

As atualizações automáticas do WordPress são uma excelente funcionalidade que nos pode poupar muito tempo e trabalho, e que nos permite manter o nosso site regularmente atualizado. Mas você ativaria todo tipo de atualização? Informe-nos nos comentários abaixo.


Se você gostou deste artigo, então você vai adorar a plataforma de hospedagem WordPress da Kinsta. Turbine seu site e obtenha suporte 24/7 de nossa experiente equipe de WordPress. Nossa infraestrutura baseada no Google Cloud se concentra em escalabilidade automática, desempenho e segurança. Deixe-nos mostrar-lhe a diferença Kinsta! Confira nossos planos