Appel à une fonction non définie create_function()
P粉198670603
P粉198670603 2023-11-16 19:00:36
0
1
759

J'ai reçu ce message sur la page d'accueil du site :

Erreur fatale : erreur non détectée : appel à la fonction non définie create_function() dans /customers/7/e/7/jovobytes.be/httpd.www/wp-content/themes/inovado/framework/inc/widgets/custommenu. php:67 Trace de pile : #0 /customers/7/e/7/jovobytes.be/httpd.www/wp-content/themes/inovado/functions.php(39) : include_once() #1 /customers/7/ e/7/jovobytes.be/httpd.www/wp-settings.php(566): include('/customers/7/e/...') #2 /customers/7/e/7/jovobytes.be /httpd.www/wp-config.php(96): require_once('/customers/7/e/...') #3 /customers/7/e/7/jovobytes.be/httpd.www/wp- load.php(50) : require_once('/customers/7/e/...') #4 /customers/7/e/7/jovobytes.be/httpd.www/wp-blog-header.php(13 ): require_once('/customers/7/e/...') #5 /customers/7/e/7/jovobytes.be/httpd.www/index.php(17): require('/customers/7 /e/...') #6 {main} lancé dans /customers/7/e/7/jovobytes.be/httpd.www/wp-content/themes/inovado/framework/inc/widgets/custommenu.php Aller à la ligne 67

J'ai donc recherché les fichiers correspondant au thème et j'ai dû réécrire le code pour être compatible avec PHP 8.0. Toute aide serait grandement appréciée ! ! !

<?php


class WP_Nav_Menu_Widget_Desc extends WP_Widget {

    function __construct() {
        parent::WP_Widget(false, 'minti.SideNav', array('description' => 'Display a Side Navigation'));

    }

    function widget($args, $instance) {
        // Get menu
        $nav_menu = wp_get_nav_menu_object( $instance['nav_menu'] );

        if ( !$nav_menu )
            return;

        echo $args['before_widget'];

        //if ( !empty($instance['title']) )
        //  echo $args['before_title'] . $instance['title'] . $args['after_title'];

        wp_nav_menu( array( 'depth' => 1, 'menu' => $nav_menu ) );

        echo $args['after_widget'];
    }

    function update( $new_instance, $old_instance ) {
        $instance['nav_menu'] = (int) $new_instance['nav_menu'];
        return $instance;
    }

    function form( $instance ) {
        $nav_menu = isset( $instance['nav_menu'] ) ? $instance['nav_menu'] : '';

        // Get menus
        $menus = get_terms( 'nav_menu', array( 'hide_empty' => false ) );

        // If no menus exists, direct the user to go and create some.
        if ( !$menus ) {
            echo '<p>'. sprintf( __('No menus have been created yet. <a href="%s">Create some</a>.'), admin_url('nav-menus.php') ) .'</p>';
            return;
        }
        ?>
        <p>
            <label for="<?php echo $this->get_field_id('nav_menu'); ?>"><?php _e('Select Menu:'); ?></label>
            <select id="<?php echo $this->get_field_id('nav_menu'); ?>" name="<?php echo $this->get_field_name('nav_menu'); ?>">
        <?php
            foreach ( $menus as $menu ) {
                $selected = $nav_menu == $menu->term_id ? ' selected="selected"' : '';
                echo '<option'. $selected .' value="'. $menu->term_id .'">'. $menu->name .'</option>';
            }
        ?>
            </select>
        </p>
        <?php
    }
}
add_action('widgets_init', create_function('', 'return register_widget("WP_Nav_Menu_Widget_Desc");'));
?>


P粉198670603
P粉198670603

répondre à tous(1)
P粉921130067

Cette opération très spécifique peut être réécrite ainsi :

add_action(
    'widgets_init',
    function() {
        register_widget("WP_Nav_Menu_Widget_Desc");
    }
);

Cependant, le widget lui-même utilise une syntaxe de constructeur à l'ancienne, elle doit donc également être modifiée.

class WP_Nav_Menu_Widget_Desc extends WP_Widget {

    function __construct() {
        parent::__construct(false, 'minti.SideNav', array('description' => 'Display a Side Navigation'));
    }
}

Cela fait un moment que je n'ai pas vu la syntaxe des constructeurs, donc je ne serais pas surpris si davantage de code est également cassé. Vous devriez vraiment envisager de mettre à niveau votre thème/plugin vers une version plus récente ou de ne pas mettre à niveau votre version PHP.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!