design-wordpress-theme icon indicating copy to clipboard operation
design-wordpress-theme copied to clipboard

Notice: Only variables should be assigned by reference

Open bunglegrind opened this issue 5 years ago • 14 comments

Buongiorno, ho appena installato il tema in una versione wordpress pulita (senza plugin o altro). Aprendo il post "hello world" appaiono i seguenti errori (notice):

  • Notice: Only variables should be assigned by reference in <...>\wordpress\wp-content\themes\design-italia\comments.php on line 6

  • Notice: Only variables should be passed by reference in <...>\wordpress\wp-content\themes\design-italia\functions.php on line 175

(quest'ultimo due volte)

Sono in ambiente Windows con PHP 7.2.7

bunglegrind avatar May 23 '19 13:05 bunglegrind

Ciao @bunglegrind , grazie per la segnalazione. Potrei aver trovato il problema, ma prima di rilasciare una nuova versione con questo fix volevo chiederti se puoi testarlo sulla tua installazione (a me non dà il tuo errore quindi volevo capire se sostenibile). Per fare questo dovresti fare una piccola modifica al file comments.php, tu potresti farlo? Grazie.

MarcoGargano avatar May 24 '19 12:05 MarcoGargano

ok, dimmi

bunglegrind avatar May 24 '19 12:05 bunglegrind

Nel file comments.php, riga 6, trovi questo: $comments_by_type = &separate_comments( $comments ); dovresti rimuovere la "&" e quindi la riga diventerebbe: $comments_by_type = separate_comments( $comments ); ...e salva!

Poi pulisci la cache e vediamo se si risolve il problema 🤞😅

MarcoGargano avatar May 24 '19 12:05 MarcoGargano

La modifica che hai proposto elimina la prima notice delle tre. Analoga modificha in functions.php riga 175 elimina solo il primo dei due notice restanti.

bunglegrind avatar May 24 '19 13:05 bunglegrind

Ma quindi hai rimosso la "&" anche in function.php?? Credo vadano tolte in entrambi i file.

Riga 175 in function.php: $comments_by_type = & separate_comments(get_comments('status=approve&post_id=' . $id)); diventa: $comments_by_type = separate_comments(get_comments('status=approve&post_id=' . $id));

Funziona?

MarcoGargano avatar May 24 '19 13:05 MarcoGargano

no. Resta comunque un notice.

bunglegrind avatar May 24 '19 13:05 bunglegrind

Quale?

MarcoGargano avatar May 24 '19 13:05 MarcoGargano

Notice: Only variables should be passed by reference in <...>\wordpress\wp-content\themes\design-italia\functions.php on line 175

bunglegrind avatar May 24 '19 13:05 bunglegrind

Giusto per capire se è colpa sempre delle &; proviamo a togliere anche l'altra. Riga 175 in functions.php, diventerebbe: $comments_by_type = separate_comments(get_comments('post_id=' . $id));

MarcoGargano avatar May 24 '19 13:05 MarcoGargano

così funziona correttamente:

$cc = get_comments('status=approve&post_id=' . $id);
$comments_by_type = separate_comments($cc);

Però questo discorso degli ampersand (che se ho capito bene modificano il passaggio delle variabili da copia a riferimento) andrebbe approfondito meglio. Non vorrei si creassero altri disservizi.

Probabilmente non ti appare perché hai disabilitato gli errori notice

bunglegrind avatar May 24 '19 13:05 bunglegrind

Avevo disattivato le notice e poi mi ero dimenticato di riattivarle. Non so come ringraziarti!!! Veramente GRAZIE! 🙏

Se hai altre segnalazioni (e anche soluzioni) suggeriscimele pure! Inserisco il fix nella prossima release, grazie ancora.

MarcoGargano avatar May 24 '19 13:05 MarcoGargano

prego! non mancherò!

bunglegrind avatar May 24 '19 14:05 bunglegrind

Stavo cercando di investigare... con il tuo fix in functions.php non serve modificare comments.php Per lo meno, a me non da errore in comments.php A te da l'errore che avevi postato all'inizio?

Così me la tengo buona per la prossima release e chiudo questa issue. Grazie ancora!

MarcoGargano avatar May 24 '19 14:05 MarcoGargano

l'errore sul comment c'è ancora se non si toglie l'ampersand da comments.php.

Ma hai installato xdebug? Gli errori a schermo risultano più evidenti.

bunglegrind avatar May 24 '19 18:05 bunglegrind