Errore Warning: Dichiarazione di description_walker::start_el dopo l'aggiornamento PHP
Ho aggiornato il mio PHP alla versione 7.0 e dopo questo ho questo messaggio nell'header del mio sito web:
Warning: Declaration of description_walker::start_el($output, $item, $depth, $args) should be compatible with Walker_Nav_Menu::start_el(&$output, $item, $depth = 0, $args = Array, $id = 0) in /homepages/2/d444683358/htdocs/wp-content/themes/zend/functions.php on line 59
Questa è la riga 59
in functions.php:
$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
Non sono un programmatore quindi non sono sicuro di cosa debba essere fatto per risolvere questo problema?
Grazie per il vostro aiuto

Il messaggio di errore mostra che la classe description_walker
estende la classe Walker_Nav_Menu
e sovrascrive il metodo start_el()
, ma la firma differisce dalla definizione del metodo nella classe genitore.
Come menzionato nei commenti, sarebbe meglio contattare lo sviluppatore del tuo tema e chiedere una versione corretta del tema.
Se lo sviluppatore non può essere raggiunto o vuoi davvero correggere il tema da solo, puoi fare quanto segue. Tieni presente che qualsiasi modifica ai file del tema verrà sovrascritta durante l'aggiornamento del tema.
Cerca nei file del tema la definizione della funzione start_el()
all'interno della classe description_walker
. La riga di codice dovrebbe essere simile a questa:
function start_el( $output, $item, $depth, $args ) {
Modificando questa riga come segue, l'avviso dovrebbe scomparire:
function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {

Quindi, è un problema di limite della versione PHP? Questo problema è iniziato solo quando ho spostato un sito da un altro host con una versione PHP diversa... Strano, non c'erano errori prima... Comunque questa risposta ha risolto il Warning, dato che sono il proprietario del tema walker... Grazie per una buona risposta, per quanto buona possa essere!

@JonasLundman Questo problema esisteva già prima di PHP7, ma nelle versioni precedenti, i warning generati avevano un livello di errore E_STRICT
. Da PHP 7 in poi sono warning normali, quindi vengono mostrati con le impostazioni predefinite del livello di errore.
