No se puede guardar el contenido del widget

2

Tengo dos widgets. Se crean en el mismo archivo-widget.php. Si mantengo solo un widget, entonces funcionará sin problemas. Pero cuando están juntos, uno dejará de funcionar (no se podrá arrastrar).

Mi código está debajo.

class Widget_1 extends WP_Widget {

    //setup the widget name, description, etc...
    public function __construct() {

        $widget_ops = array(
            'classname' => 'widget1',
            'description' => 'Description',
        );
        parent::__construct( 'widget1', 'Widget 1', $widget_ops );

    }

    //back-end display of widget
    public function form( $instance ) {
        echo '<p><strong>Some text here</p>';
    }

    //front-end display of widget
    public function widget( $args, $instance ) {

        echo $args['before_widget'];

    //there are fields in between this

        echo $args['after_widget'];
    }

}
add_action( 'widgets_init', function() {
    register_widget( 'Widget_1' );
} );




class Widget_2 extends WP_Widget {

    //setup the widget name, description, etc...
    public function __construct() {

        $widget_ops = array(
            'classname' => 'widget2',
            'description' => 'Description',
        );
        parent::__construct( 'widget2', 'Widget 2', $widget_ops );

    }

    //back-end display of widget
    public function form( $instance ) {
        echo '<p><strong>Sometext here</p>';
    }

    //front-end display of widget
    public function widget( $args, $instance ) {

        echo $args['before_widget'];

  //there are fields in between this

        echo $args['after_widget'];
    }

}
add_action( 'widgets_init', function() {
    register_widget( 'Widget_2' );
} );

Cuando cambio el

public function form( $instance )

a

public function forms( $instance )

Ambos comienzan a funcionar, pero el botón de guardar no aparece para un complemento.

Gracias

    
pregunta Latheesh V M Villa 21.07.2018 - 20:31

1 respuesta

6

La razón es bastante simple y fácil de pasar por alto ... No tiene nada que ver con colocar ambos widgets en el mismo archivo o algo así ...

Veamos su código que es responsable de imprimir el formulario de los widgets:

public function form( $instance ) {
    echo '<p><strong>Sometext here</p>';
}

¿Lo ves ahora? Hay etiquetas no cerradas ahí ...

Abre la etiqueta <p> , luego abre la etiqueta <strong> y nunca la cierra. Esto causa un comportamiento de JS incorrecto, por lo que no puede arrastrar & soltar el segundo widget ...

    
respondido por el Krzysiek Dróżdż 23.07.2018 - 23:08

Lea otras preguntas en las etiquetas