web-dev-qa-db-fra.com

Erreur d'administration du modèle après WP 4.8 mise à jour

Nous utilisons le modèle UpStream sur notre site WP. Après la dernière mise à jour WP 4.8, un message d'erreur s'affiche sur le panneau d'administration, ce qui ne nous permet pas d'utiliser le diaporama. L'erreur est la suivante:

Erreur fatale: Erreur non capturée: le nom de la fonction doit être une chaîne dans /var/www/vhost/calamburteatro.com/home/html/wp-content/themes/UpStream/lib/Admin.php:248 Trace de pile: # 0/var /www/vhost/calamburteatro.com/home/html/wp-content/themes/UpStream/lib/Admin.php(451): ThematerAdmin-> form_callback ('selectedposts_s ...', Array) # 1/var/www /vhost/calamburteatro.com/home/html/wp-content/themes/UpStream/lib/Admin.php(388): ThematerAdmin-> optionsPageContentItems (Array) # 2 /var/www/vhost/calamburteatro.com/hom html/wp-content/themes/UpStream/lib/Admin.php (324): ThematerAdmin-> optionsPageContent () # 3 /var/www/vhost/calamburteatro.com/home/html/wp-includes/class-wp- hook.php (298): ThematerAdmin-> ThematerThemeOptions ('') # 4 /var/www/vhost/calamburteatro.com/home/html/wp-includes/class-wp-hook.php(323): WP_Hook-> apply_filters ('', Array) # 5 /var/www/vhost/calamburteatro.com/home/html/wp-includes/plugin.php(453): WP_Hook-> do_action (Array) # 6/var/www/vhost /calamburteatro.com/home/html/wp-admin/admin.php(222): do_action ('apparence_page ...') # 7/in /var/www/vhost/calamburteatro.com/home/html/wp-content/themes/UpStream/lib/Admin.php à la ligne 248

La ligne 248 sur le fichier admin.php est la suivante: $callback[0]->$callback[1]();

Et tout le code de fonction est:

function form_callback ($name, $attributes = array())
    {
        if(isset($attributes['callback']) && is_array(($attributes['callback']))) {
            $callback = $attributes['callback'];
            $callback[0]->$callback[1]();
        } else {
            if(function_exists($name)) {
                return $name($attributes);
            }
        }

    }

Est-ce que quelqu'un pourrait nous aider avec ça, s'il vous plaît? Merci d'avance!

1
auroryx

C'est une question générique PHP, mais il est simple d'y répondre. Le problème est probablement dû à PHP 7.

Changez simplement la ligne:

$callback[0]->$callback[1]();

à

$callback[0]->{$callback[1]}();

Ceci est dû au fait que $callback[0]->$callback[1](); signifie $callback[0]->{$callback[1]}(); en PHP5, alors que cela signifie ($callback[0]->$callback)[1](); en PHP7.

Jetez un coup d'œil à cette page pour connaître les détails du changement.

0
Jack Johansson