Como apurar erros PHP no WordPress

A depuração do código PHP faz parte de qualquer projeto, mas o WordPress vem com sistemas de depuração específicos projetados para simplificar o processo, bem como padronizar o código em todo o núcleo, plug-ins e temas. Esta página descreve as várias ferramentas de depuração no WordPress e como ser mais produtivo em sua codificação, bem como aumentar a qualidade geral e a interoperatividade de seu código.

Para não programadores ou usuários em geral, essas opções podem ser usadas para mostrar as informações detalhadas do erro.

O Que é Depuração (Debug) e o Que Isso Significa?

Debugging, ou simplesmente debug (depuração em português), significa identificar e remover bugs ou erros de seu código. O passo final do processo de depuração é testar a correção do código e garantir que o problema não aconteça novamente.

Isso geralmente é feito por desenvolvedores usando ferramentas de debugging e é parte da rotina do estágio de desenvolvimento de um software.

O processo de depuração pode ser feito usando estratégias como testes de unidade, análise de código e programação em par.

Então antes do código ou do software ser disponibilizado para os usuários, os desenvolvedores tentarão encontrar quaisquer problemas — e então isolá-los e corrigi-los.

Às vezes, arrumar o código pode ser uma verdadeira dor de cabeça, já que pode demorar mais tempo do que foi necessário para escrevê-lo.

WP_DEBUG

WP_DEBUG é uma constante PHP (uma variável global permanente) que pode ser usada para acionar o modo de “depuração” em todo o WordPress. É considerado falso por padrão e normalmente é definido como verdadeiro no arquivo wp-config.php em cópias de desenvolvimento do WordPress.

define ('WP_DEBUG', verdadeiro); 
define ('WP_DEBUG', falso);

Nota : Os valores truefalse no exemplo não estão entre apóstrofos (‘) porque são valores booleanos (verdadeiro / falso). Se você definir constantes como 'false', elas serão interpretadas como verdadeiras porque as aspas o tornam uma string em vez de um booleano.

Não é recomendado usar WP_DEBUG ou as outras ferramentas de depuração em sites ativos; eles se destinam a testes locais e instalações temporárias.

Erros, avisos e avisos de PHP

A ativação WP_DEBUG fará com que todos os erros, avisos e advertências do PHP sejam exibidos. É provável que isso modifique o comportamento padrão do PHP, que exibe apenas erros fatais e/ou mostra uma tela branca de morte quando os erros são encontrados.

Mostrar todos os avisos e advertências do PHP geralmente resulta em mensagens de erro para coisas que não parecem quebradas, mas não seguem as convenções de validação de dados adequadas dentro do PHP. Esses avisos são fáceis de corrigir depois que o código relevante é identificado, e o código resultante é quase sempre mais resistente a bugs e mais fácil de manter.

Funções e argumentos obsoletos

A ativação WP_DEBUG também causará avisos sobre funções e argumentos obsoletos no WordPress que estão sendo usados ​​em seu site. Essas são funções ou argumentos de função que ainda não foram removidos do código principal, mas estão programados para exclusão em um futuro próximo. Avisos de suspensão de uso geralmente indicam a nova função que deve ser usada.

WP_DEBUG_LOG

WP_DEBUG_LOG é um complemento do WP_DEBUG que faz com que todos os erros também sejam salvos em um arquivo de log debug.log Isso é útil se você quiser revisar todos os avisos mais tarde ou precisar ver os avisos gerados fora da tela (por exemplo, durante uma solicitação AJAX ou wp-cron corre).

Observe que isso permite que você grave error_log() no arquivo de log usando a função embutida do PHP , que pode ser útil, por exemplo, ao depurar eventos Ajax.

Quando definido como true, o log é salvo wp-content/debug.log no sistema de arquivos do seu site. Alternativamente, você pode definir um caminho de arquivo válido para que o arquivo seja salvo em outro lugar.

define ('WP_DEBUG_LOG', verdadeiro); 
-ou- 
define ('WP_DEBUG_LOG', '/tmp/wp-errors.log');

Nota : para WP_DEBUG_LOG fazer qualquer coisa, WP_DEBUG deve estar habilitado (verdadeiro). Lembre-se de que você pode desligar WP_DEBUG_DISPLAY independentemente.

WP_DEBUG_DISPLAY

WP_DEBUG_DISPLAY é outro complemento WP_DEBUG que controla se as mensagens de depuração são mostradas dentro do HTML das páginas ou não. O padrão é ‘verdadeiro’, que mostra os erros e avisos à medida que são gerados. Definir como falso ocultará todos os erros. Isso deve ser usado em conjunto com WP_DEBUG_LOG para que os erros possam ser revisados ​​posteriormente.

define ('WP_DEBUG_DISPLAY', falso);

Nota : para WP_DEBUG_DISPLAY fazer qualquer coisa, WP_DEBUG deve estar habilitado (verdadeiro). Lembre-se de que você pode controlar de forma WP_DEBUG_LOG independente.

SCRIPT_DEBUG

SCRIPT_DEBUG é uma constante relacionada que forçará o WordPress a usar as versões “dev” dos principais arquivos CSS e JavaScript em vez das versões reduzidas que normalmente são carregadas. Isso é útil quando você está testando modificações em qualquer arquivo .js ou .css integrado. O padrão é falso.

define( 'SCRIPT_DEBUG', true );

SAVEQUERIES

SAVEQUERIES definição salva as consultas do banco de dados em uma matriz e essa matriz pode ser exibida para ajudar a analisar essas consultas. A constante definida como verdadeira faz com que cada consulta seja salva, quanto tempo essa consulta levou para ser executada e qual função a chamou.

define ('SAVEQUERIES', true);

A matriz é armazenada no global $wpdb->queries.

NOTA : Isso terá um impacto no desempenho do seu site, portanto, certifique-se de desligar quando não estiver depurando.

Exemplo wp-config.php para Debugging

O código a seguir, inserido em seu  arquivo wp-config.php , registrará todos os erros, avisos e advertências em um arquivo chamado debug.log no diretório wp-content. Ele também ocultará os erros para que não interrompam a geração da página.

// Habilita o modo WP_DEBUG 
define ('WP_DEBUG', true); 

// Habilita o registro de depuração no arquivo /wp-content/debug.log 
define ('WP_DEBUG_LOG', true); 

// Desabilita a exibição de erros e avisos 
define ('WP_DEBUG_DISPLAY', false); 
@ini_set ('display_errors', 0); 

// Use versões dev dos arquivos principais JS e CSS (apenas necessário se você estiver modificando esses arquivos principais) 
define ('SCRIPT_DEBUG', true);

NOTA : Você deve inserir ANTES /* That's all, stop editing! Happy blogging. */ no arquivo wp-config.php .

Plugins de depuração

Existem muitos plugins de depuração para WordPress que mostram mais informações sobre os internos, seja para um componente específico ou em geral. aqui estão alguns exemplos:

Dicas para Problemas de Debugging no WordPress

Quando o seu site do WordPress estiver travando ou apresentar a tela branca da morte (WSoD ou White Screen of Death), a resposta mais comum é desativar plugins ou temas e checar suas atualizações.

Enquanto isso é útil para tentar delimitar o culpado, pode demandar muito tempo e ser ineficiente. Sem contar que esse processo pode permitir que o verdadeiro problema escape sem ser notado. É por isso que ter as ferramentas certas pode realmente ser um divisor de águas.

1. Ative o WP_DEBUG

Ativar o WP_DEBUG provavelmente é a maneira mais simples de registrar problemas num site WordPress. Infelizmente, alguns desenvolvedores não fazem isso, possivelmente por esquecem que esse recurso existe.

WP_DEBUG é uma constante que ativa o modo de “depuração” do WordPress. Você pode encontrá-la no arquivo wp-config.php. O seu log pode registrar todas as atividades no seu site e ajudar a resolver quaisquer problemas.

2. Habilite Relatórios de Erro WPDB

Para detectar problemas relacionados à base de dados, você pode habilitar os relatórios de erro WPDB.

O objeto global $wpdb tem uma variável chamada $show_errors. Se você defini-la como true (verdadeira), fará com que o WordPress exiba os erros SQL para a tela para uma qualquer pesquisa que você determinar.

Para habilitar isso, vá para o diretório /public_html/wp-includes/wp-db.php  e abra o arquivo em questão. Procure pela categoria wpdb e altere a variável $show_errors para true (verdadeira).

tela de edição do arquivo wp-db.php

3. Verifique os Registros de Erro do seu Website

Às vezes, você pode encontrar a página de interval servers errors enquanto estiver navegando pelo seu site. Para arrumar esse problema, você pode revisar os logs de erro do seu website.

Promover um check-up geral dos registros pode ajudar tanto desenvolvedores iniciantes quando os avançados a detectar o problema do site.

Você pode usar a pesquisa do Google para encontrar uma possível solução.

4. Use o Ambiente de Testes do WordPress para Fazer Tweaks em seu código

Se você quer minimizar os bugs do seu site WordPress, você pode implementar o código primeiramente em um ambiente de teste.

Um site de testes é um clone quase exato do seu website que está online e pode ser hospedado no seu subdomínio privado. Esse site funciona como um terreno de desenvolvimento para qualquer código que você queira implementar no seu site ao vivo.

Geralmente, esse ambiente não está visível para visitantes ou motores de busca. Portanto, você tem mais liberdade para promover tweaks, ajustes e testar as mudanças que você deseja implementar sem afetar o seu site online.

5. Habilite o SCRIPT_DEBUG

Por padrão, o WordPress usa uma versão reduzida de arquivos CSS e JavaScript para melhorar o tempo de carregamento do seu site. Entretanto, isso pode ser um problema porque é possível que esconda erros nos scripts/plugins que você usa.

Para mudar a execução de scripts, o WordPress também proporciona uma constante que podemos adicionar para o arquivo wp-config.php, que é:

  1. define( ‘SCRIPT_DEBUG’, true );
tela de edição do arquivo wp-config.php no wordpress

Quando o valor é definido como verdadeiro, o WordPress irá automaticamente carregar as versões não reduzidas de todos os arquivos de CSS e JavaScript, fazendo com o que os plugins usem sua versão completa.

6. Detecte Erros PHP

Você pode detectar erros PHP de maneira precoce em seus scripts usando o phpinfo. Esse arquivo pode exibir informações sobre opções de compilação e extensões, versões, ambientes, sistema operacional, cabeçalhos HTTP e licenças.

Para fazer isso, você pode configurar o arquivo php.ini para habilitar relatórios de erro. Contudo, alguns serviços de hospedagem, optam por desabilitar essa função.

Isso acontece porque você não tem acesso root para habilitar o recurso.

Porém, você pode usar o PHP code checker em vez disso. Ele proporciona um assistente simples e direto que revisa problemas no seu código. Para ter uma revisão ainda mais rigorosa, você pode usar IDEs como Eclipse e PHPStorm.

Conclusão

Essas são todas as dicas que você precisa saber sobre depuração de um site WordPress. Como um desenvolvedor, você precisa identificar e resolver os problemas antes de publicar qualquer código e plugin para seus usuários. Como um webmaster, você também pode usar ferramentas de debugging para identificar o que causa problemas de performance no seu website.