Comment déboguer WordPress au-delà des bases • WPShout

By | février 2, 2021

Cours WordPress en ligne

Le débogage de WordPress commence par WP_DEBUG, mais peut aller bien au-delà. Dans cet article, nous allons:

  1. Découvrez comment écrire des messages de débogage dans un fichier journal et où se trouve ce fichier
  2. Apprenez à utiliser les fichiers de base JavaScript et CSS non minifiés à des fins de débogage,
  3. Apprenez à consigner toutes les requêtes SQL exécutées sur une page,
  4. Apprenez à connaître quelques plugins qui améliorent l'expérience de débogage

Ecrire des messages de débogage dans un fichier journal

Pour démarrer le débogage, accédez au wp-config.php à la racine du système de fichiers WordPress et activez la variable de débogage, c'est-à-dire définissez debug sur true:

define ('WP_DEBUG', vrai);

Définir cette constante comme true entraînera l'affichage de toutes les erreurs PHP, avis et avertissements à l'écran. Faire cela pendant la phase de développement du projet est fortement recommandé car cela vous montre les bogues dans votre code pendant que vous développez, et vous pouvez les corriger immédiatement.

Mais que faire si vous souhaitez vérifier les erreurs sur un site de production? L'affichage des erreurs à l'écran est la dernière chose que vous voulez faire, car cela ne perturbe pas seulement l'apparence du site, mais peut également être une source de fuite d'informations.

Alors, comment pouvons-nous attraper les bogues qui se produisent en production? Existe-t-il un moyen de voir les informations de débogage sans les partager avec les visiteurs du site? En effet, il y en a, et c’est là que d’autres constantes définies dans wp-config.php entrer en jeu.

Introduction à WP_DEBUG_DISPLAY et WP_DEBUG_LOG

Le Codex WordPress documente une solution à ce problème, sous l'entrée Comment déboguer WordPress:

Après avoir allumé WP_DEBUG, allumer WP_DEBUG_LOG. De cette façon, les erreurs suivies sont écrites dans un fichier journal.
Maintenant, vous pourriez vous demander qui va créer ce fichier journal et où se trouvera-t-il? La réponse est que WordPress s'occupe de cela pour nous, c'est-à-dire pas besoin de notre création manuelle: dès qu'une erreur survient, un fichier journal est créé, et est placé dans le contenu wp dossier. Si simple!

La prochaine chose à faire est de ne pas autoriser l'écriture d'erreurs à l'écran. Pour ce faire, désactivez WP_DEBUG_DISPLAY.

// Désactiver l'affichage des erreurs et des avertissements 
define ('WP_DEBUG_DISPLAY', faux);

Et donc, l'ensemble de commandes qui nous permet d'envoyer des messages d'erreur à un fichier et non à l'écran est le suivant:

    // Activer le mode WP_DEBUG
define ('WP_DEBUG', vrai);

// Activer la journalisation du débogage dans le fichier /wp-content/debug.log
define ('WP_DEBUG_LOG', vrai);

// Désactiver l'affichage des erreurs et des avertissements
define ('WP_DEBUG_DISPLAY', faux);

Vous devrez parfois ajouter cette ligne afin de masquer les erreurs de l'écran. Cela peut se produire si le serveur php.ini Le fichier a display_errors défini sur 1.

@ini_set ('afficher_erreurs', 0);

Écrire vos propres messages dans le fichier journal, ou quand écho Ne le coupe pas

Pendant le processus de localisation d'une erreur, l'un des moyens les plus pratiques de déboguer consiste à utiliser écho et var_dump. Mais, parfois, ces commandes ne peuvent pas être utilisées. Parfois, la raison est claire – par exemple lors de la création d'un widget et que quelque chose ne va pas pendant la méthode de sauvegarde, l'écho à l'écran ne fonctionnera pas car la fonction utilise AJAX, rafraîchissant ainsi la partie du widget à laquelle vous seriez écho-ing… D'autres fois, la raison peut ne pas être claire – vous obtenez juste une erreur fatale qui ne permet pas à la page de s'afficher, et votre écho ne s’affiche tout simplement pas à l’écran… Quoi qu’il en soit, que la raison soit claire ou non, le résultat est le même et vous devez trouver une manière différente d’afficher les valeurs des variables en question.

La solution consiste à activer les deux wp_debug et wp_debug_log dans wp-config.php, – c'est-à-dire en les réglant tous les deux sur vrai.
Cela crée un error.log fichier et le place dans le contenu wp dossier.

Comment enregistrer des variables au lieu de écho

Maintenant, au lieu d'utiliser le écho pour enregistrer vos variables, vous utilisez la commande error_log Commande PHP.

Donc, au lieu de

echo "Je suis sur la ligne 38";

Vous écrivez:

error_log("Je suis à la ligne 38");

Comment enregistrer des variables au lieu de var_dump

Supposons maintenant que nous n'ayons pas de chaîne d'erreur ou aucune chaîne du tout, mais que nous souhaitons vérifier les valeurs de certaines variables, comme nous le faisons avec var_dump.
J'ai trouvé cet extrait de code il y a quelques années dans un article qui expliquait comment vider var_dump dans un fichier, et cela ressemble à ceci:

$ x = "Ma chaîne";
// Dump x, ou toute autre variable d'ailleurs
ob_start ();
var_dump ($ x);
$ contents = ob_get_contents ();
ob_end_clean ();
error_log ($ contents);

Transformer notre débogueur intelligent en une fonction

Pour ne pas avoir à écrire ces 8 lignes à chaque fois, le plus efficace est d'en faire une fonction permanente dans votre functions.php fichier de thème si vous développez un thème, ou dans l'un de vos fichiers de plug-in si vous développez un plug-in. La fonction doit accepter un paramètre qui est la variable qui doit être sauvegardée dans le fichier.

Additionnel error_log Paramètres

Si vous regardez dans le error_log commande, vous verrez qu'il obtient 3 autres paramètres facultatifs. La combinaison du second, $ message_type, et le troisième, $ destination, et dans certains cas le quatrième, $ extra_headers, définissez un emplacement supplémentaire dans lequel le journal des erreurs peut être écrit.

Plus de possibilités de débogage dans WP-CONFIG.PHP

SCRIPT_DEBUG

Parfois – pas souvent – vous pourriez avoir un problème avec les fichiers JS ou CSS qui appartiennent au cœur de WordPress, et vous souhaitez les déboguer – insérez-en console.log commandes ou une autre forme de débogage,

Mais WordPress est très efficace pour charger ses scripts et styles et utilise des versions minifiées des fichiers JS et CSS, mais ceux-ci sont difficiles à déboguer.

Heureusement, WordPress est bien équipé pour de tels cas et propose une version non réduite de chaque fichier JS et CSS. La façon de dire à WordPress d'utiliser ces fichiers est d'activer le SCRIPT_DEBUG constante dans wp-config.php, c'est-à-dire, réglez-le sur vrai. Cela force WordPress à utiliser les versions «dev» des fichiers CSS et JavaScript de base plutôt que les versions minifiées qui sont normalement chargées.

définir('SCRIPT_DEBUG', vrai);

SAVEQUERIES

Il peut arriver que vous souhaitiez déboguer des requêtes de base de données. Cela peut se produire soit parce que vous pensez que l’une des requêtes prend plus de temps qu’elle ne le devrait, soit qu’elle renvoie des résultats incorrects, ou pour toute autre raison pour laquelle la solution serait d’examiner les requêtes en cours sur la page que vous chargez.
Dans un tel cas, activez le SAVEQUERIES constante dans wp-config.php, et toutes les requêtes seront enregistrées, en plus des informations sur la durée d'exécution de cette requête et sur la fonction qui l'a appelée. Toutes ces données sont stockées dans le global $ wpdb-> requêtes.

define ('SAVEQUERIES', vrai);

Débogage des plugins

En plus des moyens intégrés dont WordPress vous permet de déboguer, il existe quelques plugins qui peuvent également vous aider dans votre débogage. Ils donnent beaucoup plus d'informations que les possibilités intégrées et les affichent de manière plus sophistiquée. Ce sont les meilleurs, avec leurs descriptions tirées de leur page de plugins dans le référentiel de plugins WP.

  1. Moniteur de requête –
    La description: Query Monitor est le panneau des outils de développement pour WordPress. Il permet le débogage des requêtes de base de données, des erreurs PHP, des hooks et des actions, des blocs d'éditeur de blocs, des scripts et feuilles de style mis en file d'attente, des appels d'API HTTP, des appels Ajax, des appels d'API REST, etc. Il présente ses informations de manière utile, par exemple en affichant des requêtes de base de données agrégées regroupées par les plugins, thèmes ou fonctions qui en sont responsables. Il ajoute un menu de la barre d'outils d'administration affichant un aperçu de la page actuelle, avec des informations de débogage complètes affichées dans les panneaux.
    Les autres informations: Ce plugin a le plus grand nombre d'installations actives (plus de 100000 au moment de la rédaction de cet article) et est bien pris en charge (11 problèmes sur 15 résolus au cours des deux derniers mois). Il a 5 étoiles sur la base de 363 avis.
    Il est développé par John Blackbourn, un contributeur de longue date.
  2. Barre de débogage –
    La description: Ajoute un menu de débogage à la barre d'administration qui affiche la requête, le cache et d'autres informations de débogage utiles.
    Lorsque WP_DEBUG est activé, il suit également les avertissements et les avis PHP pour les rendre plus faciles à trouver. Lorsque SAVEQUERIES est activé, les requêtes MySQL sont suivies et affichées.
    Il a également d'autres modules complémentaires disponibles, tels que le plugin Debug Bar Console qui ajoute une console PHP / MySQL.
    Les autres informations: Ce plugin a plus de 30000 installations actives. Son support fait quelque peu défaut, avec 0 problème sur 4 résolu au cours des deux derniers mois. Il a 4 étoiles sur la base de 59 avis.
    Il est développé par plus de 10 contributeurs et développeurs, l'un d'eux étant WordPress.org, et certains des autres sont des contributeurs de longue date.
  3. Déboguer ceci –
    La description: Déboguer Ceci fournit des informations sur votre installation WordPress, le tout à partir de la barre d'administration frontale: l'objet WP_Query actuel, les informations et les options du blog, les fournisseurs d'intégration, les fichiers en HTML rendu (CSS, images, JavaScript), les filtres et les actions, les tailles des images, Globales et constantes, menus, statistiques de cache d'objets, plugins, plugins à utiliser, dropins, règles de réécriture, requêtes, informations PHP et serveur, pièces jointes, types de messages, scripts et styles mis en file d'attente, codes courts, barres latérales et widgets, taxonomies et termes, Thèmes, utilisateurs, programmes et travaux WP Cron et journal de débogage WP.
    Il permet des extensions de ses capacités en ajoutant du code. Des extraits de code peuvent être trouvés sur la page du plugin dans le référentiel.
    Les autres informations: Ce plugin a plus de 5000 installations actives. Il n'y a pas eu de problèmes dans le forum d'assistance au cours de la dernière année et demie. Il a 4,5 étoiles sur la base de 15 avis.
    il est développé par 4 développeurs, qui sont depuis longtemps des développeurs de plugins et de thèmes.

Débogage du canard en caoutchouc et du cerveau reptilien

Le débogage implique plus que la simple activation de variables. En fait, vous devriez d'abord essayer de localiser l'origine de votre erreur. Dans Un guide de débogage dans WordPress avec votre cerveau reptilien, Fred parcourt les différents éléments du système qui pourraient être à l'origine du bogue, et quand suspecter l'un d'entre eux.

Et si l'erreur se trouve dans le code que vous avez écrit mais que vous ne la trouvez pas? Dans ce cas, peut-être que le débogage de Rubber Duck, que David explique en détail, peut vous aider.

Où aller ensuite dans le débogage?

J'espère que cet article a introduit quelque chose de nouveau dans votre arsenal de débogage. Il est puissant d’apprendre à trouver ce qui n’a pas fonctionné dans WordPress, et je vous souhaite bonne chance pour ce voyage.

Si vous avez des suggestions pour d’autres outils et techniques de débogage, je serais ravi de les entendre dans les commentaires. 🙂

[ad_2]