Dicas básicas de debug no WordPress

Foto da estátua de Sherlock Holmes, em Londres, com a frase "Debug no WordPress"

Um procedimento muito importante no desenvolvimento de software é a depuração, mais conhecida como debug. O debug consiste na verificação e correção de erros em um programa, o que apesar de simples de definir, nem sempre é fácil de executar.

A verificação de um erro de software está muito relacionada com todo o ambiente de desenvolvimento. Cada linguagem possuirá métodos e ferramentas específicas disponíveis para o programador. Com o WordPress não é diferente.

Porém antes de falarmos de algumas dicas que podem te orientar no processo de debug no WordPress, vamos visualizar um processo geral de depuração.

Método do debug (depuração)

O debug será realizado em decorrência de um erro ou suspeita de erro. Deverá ser verificado a sua causa, ou no caso de suspeita de erro, se ele realmente está ocorrendo. O início do debug em geral se dá através da reprodução do erro. Muitas vezes é difícil reproduzir um erro, as vezes ele depende de fatores como navegador, velocidade de conexão, dentre tantos outros que o programador não consegue reproduzi-lo (o que gera o famoso “na minha máquina funciona”).

O processo de reprodução deve seguir indícios do problema, e ir minimizando as possibilidades, até que se chegue a raiz do bug. Se há, por exemplo, uma página do seu site que está dando erro 500, e as demais não, é preciso se questionar: o que essa página possui de diferente das demais? Ela usa um template da hierarquia do WordPress que as demais não usam? Há um widget sendo utilizado apenas na sidebar desta página? Foi utilizado um shortcode diferente nela? Com esses questionamentos é possível ir fazendo algumas reduções do problema.

Em geral, o processo se daria por:

  1. Detectar o problema
  2. Reproduzir o problema
  3. Reduzir o problema
  4. Atuar na sua solução

Debug no WordPress

As linguagens de programação possuem recursos que auxiliam no processo de detecção de problemas, comumente exibindo mensagens de erro e alertas sobre determinados trechos do programa executado.

No WordPress, que é escrito em linguagem php, podemos ativar o debug e exibição de mensagens definindo algumas constantes no arquivo wp-config.php, logo acima da linha /* That’s all, stop editing! Happy blogging. */ . (Ref. https://codex.wordpress.org/Debugging_in_WordPress)

WP_DEBUG

define( 'WP_DEBUG', true ); //Ativa o debug do WordPress

Ativa o modo debug do WordPress. Esta constante sozinha não irá surtir muito efeito.

WP_DEBUG_DISPLAY

define( 'WP_DEBUG_DISPLAY', true ); //Ativa a exibição de mensagens de debug do WordPress

Ativa a exibição de erros. Definindo esta constante como true, em conjunto com a WP_DEBUG, o WordPress irá exibir mensagens de erros no navegador no momento de execução do programa em que os erros ocorrerem.

WP_DEBUG_LOG

define( 'WP_DEBUG_LOG', true ); //Ativa o log de erros do WordPress

Ativa a escrita de erros do WordPress em um arquivo chamado debug.log, que fica armazenado no diretório wp-content. O log é extremamente útil quando você deseja armazenar um histórico dos erros ou deseja capturar erros em momentos em que não há saída para o navegador, caso de uma requisição AJAX por exemplo.

Utilizando estas constantes você terá o básico de informação sobre os erros para seguir seus indícios, reproduzi-los e encontrar sua origem.

Leia e interprete as mensagens

A maioria dos erros que serão exibidos com o WP_DEBUG_DISPLAY ativo podem ser altamente descritivos, e muitas vezes virão com o arquivo, nome da função e até mesmo a linha de código em que ocorreram! Busque interpretar a mensagem, ela te dará, senão a origem do problema, indícios de onde começar a tentar reproduzir o erro.

Redução do problema pela desativação de plugins

A característica do WordPress de ser modularizado com plugins, por vezes pode ajudar no isolamento do problema. Há uma técnica clássica quando não sabemos a origem do problema, que consiste na desativação de plugins, um a um, e verificação do problema a cada desativação. Assim é possível identificar até quando um problema persiste, e assim saber qual plugin está causando o problema.

Desativar um plugin irá, obviamente, remover as funcionalidades que ele adiciona ao site. E se você precisa debugar um site que está em produção, e não quer ficar desativando os plugins prejudicando a experiência do usuário que está navegando? Felizmente existe o plugin Health Check, que permite a desativação de plugins em um modo de análise pelo painel, apenas para o administrador, mantendo a versão para o usuário intacta.

Banco de dados e conteúdo

O WordPress como sistema gerenciador de conteúdo, está muito relacionado com os dados que são armazenados. Não foram poucas as vezes em que detectei erros em um plugin WordPress, porém que não ocorriam em outras instalações. Portanto, atente-se ao conteúdo na hora de realizar os testes, modifique-o, verifique se o erro de seus temas ou plugins se mantém mesmo em uma instalação limpa, assim você coletará mais informação e levantará mais indícios da raiz do erro, e se ele está relacionado ou não com o conteúdo.

Bug detectado. E a solução?

Seria impossível falar sobre as soluções dos bugs, dado que eles podem ser os mais diversos e específicos ao seu projeto possíveis. Porém se você detectou o erro, sabe reproduzi-lo e descobriu sua origem, você estará com os principais recursos em mãos para atuar na solução. (Ainda que a solução seja deixar de utilizar um determinado plugin, por exemplo)

Estas foram dicas básicas de debug no WordPress, espero que os ajudem no desenvolvimento de sites com wp, e que vocês cultivem uma abordagem mais metódica na depuração de seus projetos. Até o próximo texto!

Marcado como: debugdebuggingdepuração

Tecnólogo em Jogos Digitais pela FATEC São Caetano do Sul, é Designer e Programador. Co-fundador da Haste Design, estúdio que desenvolve projetos diversos de design e web. Desenvolve com WordPress há cerca de 4 anos. Organiza os meetups da comunidade WP São Paulo e busca sempre que possível contribuir com a comunidade.
  • Normalmente eu faço isso utilizando o seguinte código:

    define( ‘WP_DEBUG’, true );
    if ( WP_DEBUG ) {
    define( ‘WP_DEBUG_LOG’, true );
    define( ‘WP_DEBUG_DISPLAY’, true );
    @ini_set( ‘display_errors’, 1 );
    }

    Se o primeiro define está true, os entre chaves irão ser executados, se tiver como false não serão. Acho mais simples pq só troco 1 false por true quando quero debugar de fato 🙂

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *