Comment puis-je déboguer un plugin WordPress?
j'ai récemment hérité d'un plugin WordPress qui comporte quelques bugs. Mon problème est que je suis également nouveau à WordPress et je ne sais pas comment loguer les messages de débogage afin que je puisse comprendre ce qui se passe.
j'ai vraiment besoin d'un moyen de créer un popup ou log sur une console.
6 réponses
il y a cet excellent Q&A chez WordPress Stack Exchange, beaucoup de gens bien informés expliquant leurs techniques de débogage: comment déboguer des plugins?
Dans le Javascript arène, vous devez essentiellement <script>console.log('the value is' + variable);</script>
. Et utilisez Google Chrome inspecteur et/ou Firebug .
dans PHP , cela dépend où les choses se produisent ou où vous voulez la sortie.
débogage dans WordPress
Oficial de la documentation dans le Codex.
exemple wp-config.php
pour le débogage
// Enable WP_DEBUG mode
define( 'WP_DEBUG', true );
// Enable Debug logging to the /wp-content/debug.log file
define( 'WP_DEBUG_LOG', true );
// Disable display of errors and warnings
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
// Use dev versions of core JS and CSS files (only needed if you are modifying these core files)
define( 'SCRIPT_DEBUG', true );
informations D'impression dans un fichier journal
ce qui suit utilise un chemin système OSX/Unix/Linux, ajuster pour Windows.
/* Log to File
* Description: Log into system php error log, usefull for Ajax and stuff that FirePHP doesn't catch
*/
function my_log_file( $msg, $name = '' )
{
// Print the name of the calling function if $name is left empty
$trace=debug_backtrace();
$name = ( '' == $name ) ? $trace[1]['function'] : $name;
$error_dir = '/Applications/MAMP/logs/php_error.log';
$msg = print_r( $msg, true );
$log = $name . " | " . $msg . "\n";
error_log( $log, 3, $error_dir );
}
alors, dans votre code appelez la fonction my_log_file( $post, 'The post contents are:' );
Imprimer directement dans le rendu Html
/* Echo variable
* Description: Uses <pre> and print_r to display a variable in formated fashion
*/
function echo_log( $what )
{
echo '<pre>'.print_r( $what, true ).'</pre>';
}
et si nécessaire utilisez-le comme: echo_log( $post );
.
FirePHP
cette extension enregistre les informations directement dans la console du navigateur. Se référer à la Q&A suivante chez WordPress Réponses: comment utiliser L'extension WP-FirePHP? .
- ne développez pas sans débogage!
- lisez ceci s'il vous plaît: http://wp.smashingmagazine.com/2011/03/08/ten-things-every-wordpress-plugin-developer-should-know /
Bonne chance et vous pouvez nous tenir à jour.
la stratégie générale de débogage PHP est d'utiliser print_r( $var )
des déclarations et de rafraîchir la page. Simple et facile. Si vous voulez entrer dans le code Xdebug , c'est ce que vous voulez installer.
selon votre commentaire où vous Much rather use a system where debug messages can be turned off and on in one place
:
il peut être fait dans WordPress. Il y a une constante appelée WP_DEBUG
que vous pouvez définir à true
ou false
à partir de votre fichier wp-config.php
dans votre dossier WordPress (ce fichier où vous ajoutez des paramètres de base de données
).
ainsi, vous pouvez utiliser:
if( WP_DEBUG ){
echo "<script> alert('Hello World!'); </script>";
}
L'alerte montrent que lorsque vous avez WP_DEBUG défini à true
(par exemple sur une version de développement du site comme sur votre localhost) alors qu'il ne sera pas montré sur votre version de production du site (vous avez juste à mettre WP_DEBUG
à false là).
en utilisant Visual Studio et une extension de débogueur php dev tools, vous pouvez en fait le déboguer étape par étape plutôt que de les enregistrer et d'essayer de comprendre les valeurs variables pendant le temps d'exécution. Il pourrait y avoir d'autres alternatives.
PS: il n'est pas libre: (
je suis conscient que ma réponse vient plusieurs années après la question originale mais, comme j'ai eu récemment le même problème exact et que je n'ai toujours pas trouvé de solution satisfaisante, j'ai codé un plugin pour ça.
Il porte plus précisément sur les OP ont besoin:
j'ai vraiment besoin d'un moyen de créer un popup ou un log sur une console.
Espérons qu'il aidera tous les plugin/thème développeurs là-bas, qui sont à la recherche pour un moyen rapide et facile de déboguer leur code https://wordpress.org/plugins/bugfu-console-debugger
il suffit de l'installer et d'appeler la méthode de journalisation à partir de votre code PHP pour se connecter directement à la console JavaScript du navigateur.
BugFu::log($your_string-array-object);