itaeng

Sistemare WPBakery Visual Composer perché supporti php8

Alcuni di voi avranno già visto questo errore, altri lo vedranno man mano che gli hosting dismetteranno il supporto a php7:

Uncaught Error: Call to undefined function each() in /var/www/myoldwebsite/wp-content/plugins/js_composer/include/classes/core/class-vc-mapper.php:111

Come risolvere? Aggiornare il sito non è sempre un'opzione e il passaggio ad altri page builder non è affatto indolore.

Per fortuna, dopo un po' di tentativi ho scoperto che l'errore è semplice da correggere e chiunque, con un minimo di esperienza in programmazione, può riuscirci.

Il problema è la funzione each() usata in due punti nel file class-vc-mapper.php. Questa funzione è stata deprecata e non esiste più su php8. Per questo motivo è necessario (e sufficiente) sostituirla con un foreach.

Quindi, a riga 111 bisognerà sostituire questo codice

while ( $activity = each( $this->init_activity ) ) {
con questo
foreach ( $this->init_activity as $activity ) {

 

mentre, a riga 186, questo codice

while ( $activity = each( $this->element_activities[ $tag ] ) ) {
andrà sostituito con questo
foreach ( $this->element_activities[ $tag ] as $activity ) {

Fine!

Davvero, non serve altro. Se non ci sono problemi di incompatibilità con altri plugin o con il tema, il vostro sito wordpress riprenderà a funzionare correttamente.