Avis: index indéfini dans le widget wordpress

J'ai fait ce widget. Dans la zone d'administration, lorsque je change la valeur du nombre de variables, les petites et grandes ne sont pas sauvegardées. Et dans le frontend j'ai cet avis:

Remarque: Indéfini index: nombre dans /home/masqueci/public_html/wp-content/themes/Flatnews/includes/theme-widgets.php à la ligne 272

La même chose pour toutes les variables sauf la variable titre.

C'est le code du widget:

/* CUSTOM TAG CLOUD */
class Tag_cloud extends WP_Widget {

    function Tag_cloud() {
        /* Widget settings. */
        $widget_ops = array( 'classname' => 'Tag_cloud', 'description' => __('Display tag cloud.', 'fabulous') );
        /* Widget control settings. */
        $control_ops = array( 'width' => 200, 'height' => 350, 'id_base' => 'tag_cloud' );
        /* Create the widget. */
        $this->WP_Widget( 'tag_cloud', __('Fabulous tag cloud', 'fabulous'), $widget_ops, $control_ops );
    }

    function widget( $args, $instance ) {
        extract( $args );
        /* User-selected settings. */
        $title = apply_filters('widget_title', $instance['title'] );
        $number = $instance['number'];
        $small = $instance['small'];
        $large = $instance['large'];

        /* Before widget (defined by themes). */
        echo $before_widget;

        /* Title of widget (before and after defined by themes). */
        if ( $title )
            echo $before_title . '' . $title . $after_title;

            echo fab_show_tags ($small, $large, $number);

        /* After widget (defined by themes). */
        echo $after_widget;
    }

    function update( $new_instance, $old_instance ) {
        $instance = $old_instance;
        /* Strip tags (if needed) and update the widget settings. */
        $instance['title'] = strip_tags( $new_instance['title'] );
        $instance['number'] = strip_tags( $new_instance['number'] );
        $instance['small'] = strip_tags( $new_instance['small'] );
        $instance['large'] = strip_tags( $new_instance['large'] );

        return $instance;
    }
    function form( $instance ) {
        /* Set up some default widget settings. */
        $defaults = array( 'title' => 'TAG CLOUD', 'number' => '10', 'small' => '8', 'large' => '12');
        $instance = wp_parse_args( (array) $instance, $defaults );
     ?>

<input id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" style="width:100%;" />


<input id="<?php echo $this->get_field_id( 'number' ); ?>" name="<?php echo $this->get_field_name( 'number' ); ?>" value="<?php echo $instance['number']; ?>" style="width:100%;" />


<input id="<?php echo $this->get_field_id( 'small' ); ?>" name="<?php echo $this->get_field_name( 'small' ); ?>" value="<?php echo $instance['small']; ?>" style="width:100%;" />


<input id="<?php echo $this->get_field_id( 'large' ); ?>" name="<?php echo $this->get_field_name( 'large' ); ?>" value="<?php echo $instance['large']; ?>" style="width:100%;" />

<?php } }

Je ne sais pas ce qui est mauvais, j'ai fait d'autres widgets et je n'ai pas eu ce problème je pense que j'ai écrit le même code. Toute aide cela?

0
je sais ce que signifie cet avis, mais le problème est que les variables sont définies (je pense) si elles ne sont pas définies je ne sais pas où est le problème
ajouté l'auteur ThemesCreator, source
ajouté l'auteur brasofilo, source

2 Réponses

function widget( $args, $instance ) {
        extract( $args );
        /* User-selected settings. */

        $title = null; $number = null; $small = null; $large = null;

        if (! empty( $instance['title'] ) ) { $title = apply_filters('widget_title', $instance['title'] ) }
        if (! empty( $instance['number'] ) ) { $number = $instance['number']; }
        if (! empty( $instance['small'] ) ) { $small = $instance['small']; }
        if (! empty( $instance['large'] ) ) { $large = $instance['large']; }

        /* Before widget (defined by themes). */
        echo $before_widget;

        /* Title of widget (before and after defined by themes). */
        if ( $title )
            echo $before_title . '' . $title . $after_title;

            echo fab_show_tags ($small, $large, $number);

        /* After widget (defined by themes). */
        echo $after_widget;
    }
0
ajouté
l'ajout de valeurs par défaut "null" ne va pas faire disparaître les notifications. cela pourrait éventuellement fonctionner si édité avec les valeurs par défaut réelles
ajouté l'auteur Seth C., source

Placez ceci en haut de votre fonction comme ceci:

class My_Widget extends WP_Widget {
    protected $defaults;
    function _construct(){
        $this->defaults = array(
            'title'  => '',
            'number' => 5,
            'small'  => 1,
            'large'  => 10,
        );
    }
   //etc etc rest of class functions ...
}

Ensuite, incluez cette ligne supplémentaire en haut de la forme de votre formulaire comme ceci:

function form($instance) {
    $instance = wp_parse_args( (array) $instance, $this->defaults );
   //etc etc, rest of form ...
}

Évidemment, il peut être judicieux de configurer les paramètres par défaut, mais ceux qui sont vides peuvent au moins supprimer les avertissements et les notifications que vous recevez.

I just updated my widget plugin. It had the same issue as yours. Here is the example to use that goes with my answer: http://plugins.svn.wordpress.org/sm-sticky-featured-widget/tags/1.2.5/sticky-featured-widget.php

0
ajouté