Passer WordPress en mode Débogage
Dès que l’on souhaite travailler en mode développement sous WordPress, il faut au préalable penser d’activer le mode débogage. Voyons au cours de cet article comment mettre en place le mode de débogage en place.
Activer le mode de débogage
Afin de pouvoir suivre l’évolution de l’écriture d’une fonctionnalité (plugin, thème ou autre développement au sein de WordPress) Il faut activer la prise en compte du mode débogage. Cela se passe tout simplement au niveau du fichier wp-config.php à la racine du serveur. En initialisant la valeur de la constante WP_DEBUG sur true, cela active le processus de renvoi d’erreur. Il faut penser à le replacer sur false, une fois le développement terminé et favoriser cette utilisation en mode local en évitant de le faire, sous réserve, sur le site de production.
define('WP_DEBUG', true);
De même, il est possible de sauvegarder dans un fichier .log l’ensemble des messages d’erreurs (Notices, Warnings et Errors). S’il n’existe pas déjà, ce fichier se créera, par défaut, à la racine du dossier wp-content et prendra le nom de debug.log. Pour cela il faut ajouter et définir la constante WP_DEBUG_LOG sur true.
define('WP_DEBUG_LOG',true);
Vous pouvez également définir un nouveau chemin et un nouveau nom en remplaçant cette constante par une double ligne d’initialisation (pensez juste au droits d’écriture). Vous pouvez également filtrer le niveau de rapport d’erreurs que vous souhaitez.
ini_set('log_errors',1); ini_set('error_log', __DIR__ .'/wp-content/erreurs.log'); ini_set( 'error_reporting', -1 );
Maintenant depuis votre code en cours de développement vous pouvez à tout moment envoyer des infos à ce fichier simplement en invoquant:
error_log('un message');
Une troisième constante permet, ou non, d’afficher les codes d’erreurs sur la page. Par défaut cette constante est activé, mais elle peut être désactivée du fait que WP_DEBUG prend le relais de manière plus complète et en arrière boutique. Il faut également penser à désactiver l’affichage d’erreurs qui ne se fera pas de manière automatique. Il existe le plugin Log de débogage permettant de pouvoir simplifier la lecture de ce fichier log.
define('WP_DEBUG_DISPLAY',false); ini_set('display_errors', 0);
Regrouper sur un test de condition
Afin de simplifier la mise en service depuis le fichier wp-config.php, il est possible de regrouper l’ensemble des instructions sur un système de double boucle, et donc deux variables devront donc être renseignées, à savoir la prise en compte ou non du service de débogage ainsi que le mode d’affichage.
$debogage = true; $display = true; if ( $debogage == true ) { define('WP_DEBUG', true); ini_set('display_errors', 0); if ( $display == true ) { ini_set('log_errors',1); ini_set('error_log', __DIR__ .'/wp-content/erreurs.log'); ini_set( 'error_reporting', -1 ); define('WP_DEBUG_LOG',false); } else { define('WP_DEBUG_LOG',true); } } else { define('WP_DEBUG', false); ini_set('display_errors', 1); }
Vous pourrez en lire plus en vous rendant sur la page Débogage dans WordPress du codex, sur WordPress.org.
Adapter la fonction de renvoi
Un petit hic cependant dans le cas où vous souhaitiez envoyer un objet, ou un tableau… la fonction error_log(), elle, de son coté, attends une chaîne de caractère… hic … donc ajoutez simplement une fonction de renvoi adhoc dans le fichier functions.php de votre thème enfant et invoquez dorénavant la nouvelle fonction :
if (!function_exists('write_log')) { function write_log ( $log ) { if ( true === WP_DEBUG ) { if ( is_array( $log ) || is_object( $log ) ) { error_log( print_r( $log, true ) ); } else { error_log( $log ); } } } } write_log ('une chaine de caracyères'); write_log (array('val1' => 'coucou', 'val2' => 'hello'));
D’autres activations possibles
À l’instar des propriétés configurables depuis le fichier wp-config.php, il en existe deux autres qui vont nous permettre de pouvoir affiner certains réglages comme
define('SCRIPT_DEBUG', true);
qui se focalise sur l’utilisation des versions non minifiées des scripts employés par la plateforme, nous permettant ainsi de plus facilement intervenir sur
define('SAVEQUERIES', true);
qui affiche sous forme de tableau l’ensemble des requêtes SQL envoyées à la base de données. Cela permet ainsi de pouvoir d’une contrôler les bonnes syntaxes mais également de pouvoir les affiner en toute transparence.
Attention ces activations vont avoir une effet direct sur les performances générale de la plateforme.
Packager le tout dans un plugin approprié
Afin d’assouplir le processus, il est intéressant de réaliser cette approche sous la forme d’un plugin. Si besoin, n’hésitez pas de vous rapprocher de l’article Les bases de développement d’un plugin pour WordPress. En fait il suffit de placer la fonction précédente dans un fichier PHP à entête commenté. Vous trouverez les fichiers nécessaires sur https://github.com/Birnou/WP-Activate-Debug
3 réponses
[…] Nous pouvons donc activer directement son mode de débogage, rapprochez vous de l’article Passer WordPress en mode Débogage et on peut également adjoindre un certain nombre de plugin allant dans ce […]
[…] au cour de cet article. Je vous propose de mettre en place un bac à sable, accompagné d’un environnement de débogage, et de pouvoir ainsi tester au fur et à mesure l’ensemble des scripts qui vont suivre. […]
[…] en cas d’école en pratique. Donc une fois encore ouvrez un bac à sable, activez si besoin un plugin de débogage et assistez vous de divers thèmes de […]