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.
Índice do artigo
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: