Die Javascript-Funktion console.log() ist beim Debugging quasi unumgänglich. Allerdings möchte man in Produktivumgebungen keine Debug-Meldungen sehen.
Man kann natürlich beim Staging aus der Entwicklungs- oder Test-Umgebung jedes mal alle Aufrufe von console.log() auskommentieren oder löschen. Sofern eine Website allerdings einer ständigen Eeiterentwicklung unterliegt, ist das eher mühsam. Außerdem ist jeder manuelle Schritt beim Staging eine potentielle Fehlerquelle.
Eleganter ist es, dabei auf den Debug-Status von WordPress zurückzugreifen.
In Entwicklungs- oder Test-Umgebungen werden sich ziemlich sicher in der wp-config.php die Zeilen
1 2 3 |
define( 'WP_DEBUG', true ); # WP-Debugging ein- oder ausschalten define( 'WP_DEBUG_LOG', true ); # Logfile (/wp-content/debug.log) ein- oder ausschalten define( 'WP_DEBUG_DISPLAY', false); # Anzeige von Debuginformationen ein- oder ausschalten |
finden.
Während in Live- oder Produktivumgebungen hoffentlich die Zeilen
1 2 3 |
define( 'WP_DEBUG', false ); # WP-Debugging ein- oder ausschalten define( 'WP_DEBUG_LOG', false ); # Logfile (/wp-content/debug.log) ein- oder ausschalten define( 'WP_DEBUG_DISPLAY', false); # Anzeige von Debuginformationen ein- oder ausschalten |
vorhanden sind.
Man ergänzt jetzt diesen Abschnitt einfach um eine weitere Konstante:
1 |
define( 'WP_DEBUG_JS', true ); # Eigenes Debugging für Javascript ein- oder ausschalten |
Die Konstante WP_DEBUG_JS lässt sich beim Enqueuing des Javascripts im (Child-)Theme oder Plugin über die Lokalisierung mit übergeben:
1 2 3 |
wp_enqueue_script( 'stableweb_js', get_stylesheet_directory_uri() . "/js/stableweb.js", array('jquery'), date( "Ymd.His", filemtime( get_stylesheet_directory(). "/js/stableweb.js" ) ) ); wp_localize_script( 'stableweb_js', 'stableweb_params', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'debug_js' => WP_DEBUG_JS ) ); |
In der Javascript-Datei muss dann nur noch console.log() in einer eigenen Funktion gekapselt werden
1 2 3 4 |
function stableweb_log( logtext ) { if ( stableweb_params.debug_js ) console.log( logtext ); } |
und einmalig “console.log( … )” durch “stablew_eblog( … )” ersetzt werden.
Exkurs: Relative URLs für Medien für einfacheres Migrieren von der Test- in die Live-Umgebung
Wenn man schon an der wp-config.php dran ist, kann man auch gleich noch dafür Sorge tragen, dass Medien mit relativen URLs verarbeitet werden:
1 |
define( 'WP_CONTENT_URL', '/wp-content'); # relative URLs für Medien |