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.

25
demandé sur brasofilo 2013-01-27 01:57:39

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? .

16
répondu brasofilo 2017-05-23 12:18:17
  1. ne développez pas sans débogage!
  2. 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.

4
répondu Grávuj Miklós Henrich 2013-01-26 22:01:37

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.

2
répondu Chris DaMour 2018-04-18 14:48:47

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à).

0
répondu RRikesh 2017-05-23 12:10:31

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: (

-1
répondu curiousBoy 2017-12-03 21:58:38

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);
-2
répondu fedeandri 2018-03-25 08:23:00