Come eseguire il debug delle variabili all'interno di una funzione nel file functions.php?
Ho questa funzione:
function wpse_210493_apply_advertising_position( &$posts, $return = false ) {
$ad_posts = array();
$content_posts = array_filter(
$posts,
function ( $post ) {
$position = get_post_meta( $post->ID, 'rw_adversiting_position', true );
if ( empty( $position ) ) {
return true;
}
$ad_posts[ intval( $position ) ] = $post;
return false;
} );
$content_posts = array_values( $content_posts );
ksort( $ad_posts );
echo "sdfksfkjshdfsdf";
foreach ( $ad_posts as $position => $ad ) {
array_splice( $content_posts, $position, 0, $ad );
}
if ( $return ) {
return $content_posts;
} else {
$posts = $content_posts;
}
}
Ho bisogno di eseguire il debug di $ad_posts
dopo il ksort()
ma l'output non viene visualizzato nel browser. Ho testato con l'echo
che vedete lì e anche quel testo non viene visualizzato come output nel browser. Come posso eseguire correttamente il debug dei valori?
Puoi semplicemente usare var_dump()
per fare questo. È così che controllo i valori all'interno delle funzioni e dei filtri.
Ho la seguente riga di codice in un file che semplicemente copio e incollo dove necessario per visualizzare il valore di una variabile
?><pre><?php var_dump( $variable_to_test ); ?></pre><?php
I tag pre
mostrano un array/oggetto/stringa leggibile a seconda del valore. All'interno della tua funzione puoi semplicemente fare
?><pre><?php var_dump($ad_posts); ?></pre><?php
dopo ksort( $ad_posts );
.
Assicurati solo di chiamare la funzione da qualche parte se non è collegata a qualche tipo di hook, altrimenti non succederà nulla

Ohhh ho capito, avevo alcuni problemi di cache, mi sono dimenticato di disabilitare il plugin e/o svuotare la cache, comunque grazie

Per eseguire il debug di questi valori non è necessario visualizzarli nel browser. Piuttosto fai così:
error_log(tua-variabile-o-qualcosa);
E controlla il tuo log degli errori in wp-content/debug.log
.
Per far funzionare questo metodo devi avere define( 'WP_DEBUG_LOG', true );
impostato nel tuo wp-config.php
.
MODIFICA:
Come ha sottolineato @nmr, è richiesto anche define( 'WP_DEBUG', true );
.

Il modo corretto e professionale per farlo sarebbe utilizzare XDebug e un IDE che lo supporti, lavorando in ambiente di sviluppo locale.
La configurazione più semplice che posso consigliare è usare Local by Flywheel (gratuito) per lo sviluppo locale: https://localbyflywheel.com/
Local ha un'opzione nella sezione Utilities (per un sito) per aggiungere la configurazione XDebug a PHPStorm. Dopo aver cliccato quel pulsante, riapri il progetto in PHPStorm e vedrai una configurazione di debug già impostata per quel sito.
PHPStorm EAP (in precedenza la versione EAP era gratuita) può essere scaricato qui (ha anche una prova gratuita di 30 giorni): https://blog.jetbrains.com/phpstorm/2019/04/phpstorm-2019-1-2-preview-191-7141-5/
Documentazione sulla configurazione di XDebug: https://www.jetbrains.com/help/phpstorm/debugging-with-phpstorm-ultimate-guide.html
Potrai quindi impostare un breakpoint nel tuo codice e ispezionarlo usando XDebug.
Le opzioni sopra indicate funzionano in situazioni d'emergenza, ma il modo corretto per eseguire il debug in PHP è utilizzare un IDE e XDebug, e ti farà risparmiare MOLTO tempo se impari a farlo nel modo giusto.
Utilizzo di error_log
:
Per ampliare le risposte degli altri sull'output di error_log
, se si tratta di un array o qualcosa che non è una stringa, è meglio usare print_r
impostando return a true
:
error_log( 'MY STUFF: ' . print_r( $something, true ) );
