O WordPress apresenta, por defeito, sistemas de debug de código PHP desenvolvidos parasimplificar o processo, bem como padronizar o código no core, bem como ao nível dos plugins e temas.  Ao longo deste artigo apresentamos as diferentes formas para fazer debug no WordPress. 

De forma a poder editar os ficheiros do WordPress indicados ao longo do artigo, poderá fazê-lo via FTP ou através do Painel de Controlo do alojamento do seu website.

WP_DEBUG

O WP_DEBUG trata-se de uma variável constante de PHP que pode ser utilizada para ativar o modo de debug em todo o WordPress. Por defeito, esta variável é definida como “falsa”. Se pretender proceder à ativação do modo de debug, deve defini-la como “verdadeira” no ficheiro wp-config.php do seu WordPress.

// Para ativar debug de PHP
define( 'WP_DEBUG', true );

 

// Para desativar debug de PHP
define( 'WP_DEBUG', false );

O WP_DEBUG ou outro tipo de ferramenta que permita efetuar debug não deve estar ativo em websites em produção, é aconselhável para páginas de teste locais ou para instalações WordPress temporárias. Isto porque ao ativar o modo de debug, assim que visitar o website os erros existentes são mostrados tanto a si como aos visitantes do seu website.

Com a ativação do WP_DEBUG são apresentados todos os erros, avisos e avisos de PHP para situações que, por norma, parecem estar corretas, mas que, no entanto, não seguem as regras de validação de dados de PHP.

Funções e argumentos obsoletos

Ao ativar o WP_DEBUG também serão apresentados avisos sobre funções e argumentos que se encontram obsoletos na sua instância do WordPress. Tratam-se de funções ou de argumentos de funções que apesar de terem sido removidos do código principal, estão programados para exclusão num futuro update.

WP_DEBUG_LOG

O WP_DEBUG_LOG é complementar ao WP_DEBUG, permitindo que todos os erros sejam guardados num ficheiro de log: debug.log. Esta funcionalidade é particularmente útil em casos em que seja necessário proceder, posteriormente, a uma revisão de todos os avisos gerados, como por exemplo, para um pedido AJAX ou quando corre um wp-cron.  De referir que permite guardar no ficheiro de log, recorrendo à utilização da função error_log () do PHP, podendo isto ser ser útil, por exemplo, para o debug de eventos AJAX.

Ao definir o  WP_DEBUG_LOG como “verdadeiro”, o log é guardado no ficheiro debug.log na pasta de conteúdos, por norma,  em wp-content / debug.log ou alternativamente poderá ser definido outro caminho válido para salvar o ficheiro onde assim o pretender.

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

De forma a que WP_DEBUG_LOG funcione,  o WP_DEBUG tem de ser ativado, isto é,  ser definido como “verdadeiro”.  Se assim o entender, poderá ativar o WP_DEBUG_DISPLAY.

WP_DEBUG_DISPLAY

O WP_DEBUG_DISPLAY é outro dos complementos do WP_DEBUG, permitindo controlar se as mensagens de debug são mostradas ou não no HTML das páginas. Para que os erros e mensagens sejam mostrados à medida que são gerados, deverá definir como “verdadeiro” (que é a opção padrão). Caso pretenda ocultar esses erros e mensagens deverá definir como “falso”. De forma a que possa rever, posteriormente, os erros, deve utilizar o WP_DEBUG_DISPLAY em simultâneo com o  WP_DEBUG_LOG.

define( 'WP_DEBUG_DISPLAY', false );

 

Para que o WP_DEBUG_DISPLAY funcione, o WP_DEBUG deve estar ativado, isto é, definido como “verdadeiro”.

SCRIPT_DEBUG

O SCRIPT_DEBUG irá forçar o WordPress a utilizar as versões “dev” dos ficheiros principais de CSS e de JavaScript em detrimento das versões reduzidas que são, normalmente, carregadas. Esta funcionalidade é particularmente útil quando estão a ser testadas alterações aos ficheiros integrados de .js ou  de .css. Por padrão, está definido como “falso“.

define( 'SCRIPT_DEBUG', true );
SAVEQUERIES

O SAVEQUERIES guarda as consultas da base de dados numa matriz, a qual pode ser mostrada com o intuito de auxiliar na análise dessas consultas. Ao definir a savequerie  como “verdadeira” isso permitirá que cada consulta seja salva, e que indique quanto tempo a mesma demorou a ser executada, bem como qual a função que foi chamada.

define( 'SAVEQUERIES', true );

A matriz é armazenada nas consultas globais $ wpdb->.

Uma vez que a sua ativação terá impacto no desempenho do seu website, deverá certificar-se de que é desativado quando não estiver a fazer debug.

Exemplo de um ficheiro wp-config.php para Debug

Os exemplos de configurações abaixo apresentadas devem ser inseridas no seu ficheiro wp-config.php, e pemitirão registar todos os erros, avisos e advertências no ficheiro debug.log na pasta wp-content. Por outro lado, permitrão também ocultar os erros.

 

// Ativação do WP_DEBUG 
define( 'WP_DEBUG', true );

// Ativação do Debug logging no/wp-content/debug.log 
define( 'WP_DEBUG_LOG', true );

// Desativar a visualização de erros e aviso
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

// Utilização de versões DEV do core dos ficheirosJS and CSS files (apenas utilizar se necessitar de modificar os ficheiros)
define( 'SCRIPT_DEBUG', true );

Deve inserir ANTES /* That’s all, stop editing! Happy blogging. */ no ficheiro wp-config.php.

Plugins para Debug

No diretório do WordPress, existem diversos plugins para debug, nomeadamente e a título de exemplo: