Comment afficher les requêtes MySQL exécutées par WordPress

 

Quand une requête MySQL ne me renvoie pas ce à quoi je m'attendais, j'aime bien faire un petit echo de son contenu et le tester dans phpMyAdmin. Mais quand il s'agit d'un plugin WordPress, baaaaah c'est pas trop possible.

Je n'aime pas trop installer des plugins supplémentaires sans savoir ce qu'ils font, donc avant de me jeter sur Query Monitor, j'ai quand même essayé de voir s'il n'y avait pas un moyen tout simple de les afficher, ces fichues requêtes.

Alors attention, avant d'aller plus loin : il est hors de question d'afficher des requêtes MySQL sur votre blog/site en prod, c'est à dire la version que vos visiteurs voient ! Déjà, ils vont se demander ce qui se passe, et plus ce n'est pas la peine de faciliter la tâche aux pirates.

Donc soit vous faites ça sur votre version locale sur votre PC (en localhost), soit vous ciblez. Si le bug se trouve dans l'admin, seulement accessible via mot de passe, vous mettez votre 2e bout de code dans le fichier wp-admin/admin-footer.php de votre thème, en filtrant sur la page voulue avec la variable $pagenow.

Une fois le bug corrigé, n'oubliez pas de supprimer les bouts de code qui vous ont permis d'afficher les requêtes !

Les bouts de code en question sont à palcer dans 2 fichiers différents :

Dans wp-config

define('SAVEQUERIES', true);

Après les dernières lignes du footer de la page où vous voulez afficher les requêtes (oui, il vaut mieux le footer, sinon vous allez manquer des requêtes)

if (current_user_can('administrator')){
  global $wpdb;
  echo "<pre>";
  print_r($wpdb->queries); 
  echo "</pre>";
}

Si je désire que les requêtes ne soient affichées que sur edit.php mais pas dans post.php, je complète ma condition :

if (current_user_can('administrator') && $pagenow == 'edit.php')

Après, bonne chance pour trouver votre requête dans le tas, car elles sont affichées les unes à la suite des autres et non pas à côté de l'élément concerné. Et masquées partiellement par le menu de gauche !

Par exemple, s'il s'agit d'un bug du moteur de recherche sur un custom post-type, utiliser Ctrl+F sur le mot-clé utilisé dans la recherche (ici le mot-clé « croq »)…

Recherche dans une des requêtes affichées

Karine SANCHE

Partager cet article