Heim  >  Fragen und Antworten  >  Hauptteil

Aufruf der undefinierten Funktion create_function()

Ich habe diese Nachricht auf der Startseite der Website erhalten:

Schwerwiegender Fehler: Nicht erfasster Fehler: Aufruf der undefinierten Funktion create_function() in /customers/7/e/7/jovobytes.be/httpd.www/wp-content/themes/inovado/framework/inc/widgets/custommenu. php:67 Stack Trace: #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} wirft /customers/7/e/7/jovobytes.be/httpd.www/wp-content/themes/inovado/framework/inc/widgets/custommenu.php ein bis Zeile 67

Also habe ich nach den Dateien gesucht, die zum Thema passen, und musste den Code neu schreiben, um ihn mit PHP 8.0 kompatibel zu machen. Jede Hilfe wäre sehr dankbar! ! !

<?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粉198670603P粉198670603307 Tage vor770

Antworte allen(1)Ich werde antworten

  • P粉921130067

    P粉9211300672023-11-17 11:33:44

    这个非常具体的操作可以重写为:

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

    但是,小部件本身使用旧式构造函数语法,因此也需要更改。

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

    自从我看到构造函数语法以来已经有一段时间了,所以如果更多的代码也被破坏,我不会感到惊讶。您确实应该考虑将主题/插件升级到更新版本,或者升级您的 PHP 版本

    Antwort
    0
  • StornierenAntwort