Jump to content

Kargano

New Members
  • Posts

    4
  • Joined

  • Last visited

Posts posted by Kargano

  1. Thanks for the answer.

    The problem is that the constructor gives an error.

    This is the whole error message.

    [06-Sep-2021 08:50:12 UTC] PHP Fatal error:  Uncaught ArgumentCountError: Too few arguments to function WP_Widget::__construct(), 0 passed in /****/****.com/rebuild.****.com/wp-includes/class-wp-widget-factory.php on line 61 and at least 2 expected in /****/****.com/rebuild.****.com/wp-includes/class-wp-widget.php:162
    Stack trace:
    #0 /****/****.com/rebuild.****.com/wp-includes/class-wp-widget-factory.php(61): WP_Widget->__construct()
    #1 /****/****.com/rebuild.****.com/wp-includes/widgets.php(115): WP_Widget_Factory->register('VMenuWidget')
    #2 /****/****.com/rebuild.****.com/wp-content/themes/oldtheme/library/widgets.php(255): register_widget('VMenuWidget')
    #3 /****/****.com/rebuild.****.com/wp-includes/class-wp-hook.php(303): artWidgetsInit('')
    #4 /****/****.com/rebuild.****.com/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters('', Array)
    #5 /****/****.com/rebuild.****.com/wp-includes/plugin.php(470): WP_Hook->do_action(Array)
    #6 /****/****.com/rebuild.****.com/wp-includes/widgets.php(1809): do_action('widgets_init')
    #7 /****/****.com/rebuild.****.com/wp-includes/class-wp-hook.php(303): wp_widgets_init('')
    #8 /****/****.com/rebuild.****.com/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters(NULL, Array)
    #9 /****/****.com/rebuild.****.com/wp-includes/plugin.php(470): WP_Hook->do_action(Array)
    #10 /****/****.com/rebuild.****.com/wp-settings.php(578): do_action('init')
    #11 /****/****.com/rebuild.****.com/wp-config.php(85): require_once('/home/httpd/vho...')
    #12 /****/****.com/rebuild.****.com/wp-load.php(50): require_once('/home/httpd/vho...')
    #13 /****/****.com/rebuild.****.com/wp-blog-header.php(13): require_once('/home/httpd/vho...')
    #14 /****/****.com/rebuild.****.com/index.php(17): require('/home/httpd/vho...')
    #15 {main}
      thrown in /****/****.com/rebuild.****.com/wp-includes/class-wp-widget.php on line 162

    And when I rename the PHP file I have no error anymore.

    I have also found this Info https://www.php.net/manual/de/migration71.incompatible.php this was the reason for me to think the error was the line i posted.

    But thank you very much.

  2. Hello all,
    I have for a customer site still an old WP template and have trouble converting from PHP 7 to PHP 8.

    I get the following error: Uncaught ArgumentCountError: Too few arguments to function .

    I was able to reduce the error to this PHP file.

    <?php
    // widget extra options
    global $theme_widgets_style;
    $theme_widgets_style = array(
        'default' => __('sidebar default', THEME_NS),
        'block'   => __('block', THEME_NS),
        'post'    => __('post', THEME_NS),
        'simple'  => __('simple text', THEME_NS)
    );
    
    function theme_get_widget_style($id, $style = null) {
    
        $result = theme_get_widget_meta_option($id, 'theme_widget_styles');
        global $theme_widgets_style;
        if (!in_array($result, array_keys($theme_widgets_style))) {
            $result = 'default';
        }
        if ($style != null) {
            if (!in_array($style, array('block', 'post', 'simple'))) {
                $style = 'block';
            }
            if ($result == 'default') {
                $result = $style;
            }
        }
        return $result;
    }
    
    function theme_set_widget_style($id, $style) {
        global $theme_widgets_style;
        if (!in_array($style, array_keys($theme_widgets_style))) {
            $style = 'default';
        }
        theme_set_widget_meta_option($id, 'theme_widget_styles', $style);
    }
    
    function theme_widget_expand_control($id) {
        global $wp_registered_widget_controls;
        $controls = &$wp_registered_widget_controls[$id];
        if (!is_array($controls['params'])) {
            $controls['params'] = array($controls['params']);
        }
        $controls['params'][] = $id;
        if (isset($controls['callback'])) {
            $controls['callback_redirect'] = $controls['callback'];
        }
        $controls['callback'] = 'theme_widget_extra_control';
    }
    
    function theme_update_widget_additional($instance) {
        global $theme_widget_meta_options;
        foreach ($theme_widget_meta_options as $value) {
            $id = theme_get_array_value($value, 'id');
            $val = stripslashes(theme_get_array_value($_POST, $id));
            $type = theme_get_array_value($value, 'type');
            $options = theme_get_array_value($value, 'options');
            switch ($type) {
                case 'checkbox':
                    $val = ($val ? 1 : 0);
                    break;
                case 'numeric':
                    $val = (int) $val;
                    break;
                case 'select':
                    if (!in_array($val, array_keys($options))) {
                        $val = reset(array_keys($options));
                    }
                    break;
            }
            $instance[$id] = $val;
        }
        return $instance;
    }
    function theme_widget_process_control() {
        global $wp_registered_widget_controls;
        if ('post' == strtolower($_SERVER['REQUEST_METHOD']) && isset($_POST['widget-id'])) {
            theme_widget_expand_control($_POST['widget-id']);
            return;
        }
        foreach ($wp_registered_widget_controls as $id => $widget) {
            theme_widget_expand_control($id);
        }
    }
    
    function theme_widget_extra_control() {
        global $wp_registered_widget_controls, $theme_widgets_style, $theme_widget_meta_options;
        $_theme_widget_meta_options = $theme_widget_meta_options;
        $params = func_get_args();
        $widget_id = $params[count($params) - 1]; // see theme_widget_expand_control func
        $widget_controls = theme_get_array_value($wp_registered_widget_controls, $widget_id, array());
        if (isset($widget_controls['callback_redirect'])) {
            $callback = $widget_controls['callback_redirect'];
            if (is_callable($callback)) {
                call_user_func_array($callback, $params);
            }
        }
        if (!preg_match('/^(.*[^-])-([0-9]+)$/', $widget_id, $matches) || !isset($matches[1]) || !isset($matches[2])) {
            return false;
        }
        $id = $matches[1] . '-' . $params[0]['number'];
        
        ?>
        <h3 style="margin-bottom:3px;"><?php _e('Theme Options', THEME_NS); ?></h3>
        <?php
        theme_print_meta_box($id, $_theme_widget_meta_options);
    }
    
    // widgets
    
    class VMenuWidget extends WP_Widget {
    
        function VMenuWidget() {
            $widget_ops = array('classname' => 'vmenu', 'description' => __('Use this widget to add one of your custom menus as a widget.', THEME_NS));
            parent::WP_Widget(false, __('Vertical Menu', THEME_NS), $widget_ops);
        }
    
        function widget($args, $instance) {
            extract($args);
            $title = apply_filters('widget_title', $instance['title'], $instance, $this->id_base);
            echo $before_widget;
            echo $before_title . $title . $after_title;
            echo theme_get_menu(array(
                'source' => $instance['source'],
                'depth'  => theme_get_option('theme_vmenu_depth'),
                'menu'   => wp_get_nav_menu_object($instance['nav_menu']),
                'class'  => ''
            ));
            echo $after_widget;
        }
    
        function update($new_instance, $old_instance) {
            $instance['title'] = strip_tags($new_instance['title']);
            $instance['source'] = $new_instance['source'];
            $instance['nav_menu'] = (int) $new_instance['nav_menu'];
            return $instance;
        }
    
        function form($instance) {
            //Defaults
            $instance = wp_parse_args((array) $instance, array('title' => '', 'source' => 'Pages', 'nav_menu' => ''));
            $title = esc_attr($instance['title']);
            $source = $instance['source'];
            $nav_menu = $instance['nav_menu'];
    
            // Get menus
            $menus = get_terms('nav_menu', array('hide_empty' => false));
            $sources = array(
                          'Pages' => __('Pages', THEME_NS), 
                          'Categories' => __('Categories', THEME_NS), 
                          'Custom Menu' => __('Custom Menu', THEME_NS)
                          );
            ?>
            <p>
                <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:', THEME_NS) ?></label>
                <input type="text" class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo $title; ?>" />
            </p>
            <p>
            <label for="<?php echo $this->get_field_id('source'); ?>"><?php echo __('Source', THEME_NS) . ':'; ?></label>
            <select class="widefat" id="<?php echo $this->get_field_id('source'); ?>" name="<?php echo $this->get_field_name('source'); ?>" onchange="var s = jQuery('.p-<?php echo $this->get_field_id('nav_menu'); ?>'); if (this.value == 'Custom Menu') s.show(); else s.hide();">
            <?php
            foreach ($sources as $s => $t ) {
                $selected = ($source == $s ? ' selected="selected"' : '');
                echo '<option' . $selected . ' value="' . $s . '">' . $t . '</option>';
            }
            ?>
            </select>
            </p>
            <p class="p-<?php echo $this->get_field_id('nav_menu'); ?>" <?php if ($source !== 'Custom Menu') echo ' style="display:none"' ?>>
            <?php
            // If no menus exists, direct the user to go and create some.
            if (!$menus) {
                printf(__('No menus have been created yet. <a href="%s">Create some</a>.', THEME_NS), admin_url('nav-menus.php'));
            } else {
                ?>
                <label for="<?php echo $this->get_field_id('nav_menu'); ?>"><?php _e('Select Menu:', THEME_NS); ?></label><br />
                <select class="widefat" 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>
                <?php
            }
            ?>
            </p>
            <?php
        }
    
    }
    
    class LoginWidget extends WP_Widget {
    
        function LoginWidget() {
            $widget_ops = array('classname' => 'login', 'description' => __('Login form', THEME_NS));
            $this->WP_Widget(false, __('Login', THEME_NS), $widget_ops);
        }
    
        function widget($args, $instance) {
            global $user_ID, $user_identity, $user_level, $user_email, $user_login;
            extract($args);
            echo $before_widget;
            echo $before_title;
            if ($user_ID):
                echo $user_identity;
                echo $after_title;
                ?>
                <ul>
                <li><a href="<?php echo esc_url( site_url() ) ?>/wp-admin/"><?php _e('Dashboard', THEME_NS); ?></a></li>
                <?php if ($user_level >= 1): ?>
                    <li><a href="<?php echo esc_url( site_url() ) ?>/wp-admin/post-new.php"><?php _e('Publish', THEME_NS); ?></a></li>
                    <li><a href="<?php echo esc_url( site_url() ) ?>/wp-admin/edit-comments.php"><?php _e('Comments', THEME_NS); ?></a></li>
                <?php endif; ?>
                <li><a href="<?php echo wp_logout_url() ?>&amp;redirect_to=<?php echo urlencode(theme_get_current_url()); ?>"><?php _e("Log out", THEME_NS); ?></a></li>
                </ul>
            <?php
            else:
                _e('Log In', THEME_NS);
                echo $after_title;
                ?>
                <form action="<?php echo esc_url( site_url() ) ?>/wp-login.php" method="post" name="login" id="form-login">
                    <fieldset class="input" style="border: 0 none;">
                        <p id="form-login-username">
                            <label for="log"><?php _e('Username', THEME_NS) ?></label>
                            <br>
                            <input type="text" name="log" id="log" value="<?php echo esc_attr(stripslashes($user_login), 1) ?>" size="20" />
                        </p>
                        <p id="form-login-password">
                            <label for="pwd"><?php _e("Password", THEME_NS); ?></label>
                            <br>
                            <input type="password" name="pwd" id="pwd" size="20" /><br />
                        </p>
                        <p id="form-login-remember">
                            <label for="rememberme"><?php _e('Remember Me', THEME_NS); ?></label>
                            <input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" />
                        </p>
                        <input class="art-button" type="submit" name="submit" value="<?php echo esc_attr(__('Log In', THEME_NS)); ?>" />
                    </fieldset>
                    <input type="hidden" name="redirect_to" value="<?php echo theme_get_current_url(); ?>"/>
                </form>
                <ul>
                    <?php if (get_option('users_can_register')) { ?>
                    <li><a href="<?php echo esc_url( site_url() ) ?>/wp-register.php"><?php _e("Register", THEME_NS); ?></a></li>
                    <?php } ?>
                    <li><a href="<?php echo esc_url( site_url() ) ?>/wp-login.php?action=lostpassword"><?php _e("Lost your password?", THEME_NS); ?></a></li>
                </ul>
            <?php endif;
            echo $after_widget;
        }
    }
    
    // init widgets
    function artWidgetsInit() {
        register_widget('VMenuWidget');
        register_widget('LoginWidget');
    }
    
    add_action('widgets_init', 'artWidgetsInit');

    I suspect the error is in these lines

    function form($instance) {
            //Defaults
            $instance = wp_parse_args((array) $instance, array('title' => '', 'source' => 'Pages', 'nav_menu' => ''));
            $title = esc_attr($instance['title']);
            $source = $instance['source'];
            $nav_menu = $instance['nav_menu'];


    Does anyone have a tip for me ? Or would tell me how much it costs to make it compatible?
    I have searched for quite a long time, but have not found anything.

    Best regards
    Kargano

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.