Aiuto con widget personalizzati

Ho provato i metodi per creare un widget personalizzato e non ho avuto fortuna. Sto cercando di “widgetizzare” un modello e consentire a un utente finale di aggiornare solo il testo nelle aree widgetizzate, ma sembra che questo sia piuttosto tagliato e asciutto guardando il codice, ma non riesco a ottenere nulla da produrre. Il widget viene visualizzato nel pannello di amministrazione e sono in grado di memorizzare il testo, ma non l’output. Sono sicuro che mi manca qualcosa di evidentemente ovvio.

Ecco il plugin: (codice aggiornato)

class Header_Slide extends WP_Widget { /** * Register widget with WordPress. */ function __construct() { parent::__construct( 'header_slide', // Base ID __('Header Slide', 'text_domain'), // Name array( 'description' => __( 'Use this widget to edit the first slider section', 'text_domain' ), ) // Args ); } /** * Front-end display of widget. * * @see WP_Widget::widget() * * @param array $args Widget arguments. * @param array $instance Saved values from database. */ public function widget( $args, $instance ) { echo $args['before_widget']; ?> 

<label for="get_field_id( 'headline1' ); ?>"> <input class="widefat" id="get_field_id( 'headline1' ); ?>" name="get_field_name( 'headline1' ); ?>" type="text" value="">

<label for="get_field_id( 'blurb1' ); ?>"> <input class="widefat" id="get_field_id( 'blurb1' ); ?>" name="get_field_name( 'blurb1' ); ?>" type="text" value="">

<label for="get_field_id( 'headline2' ); ?>"> <input class="widefat" id="get_field_id( 'headline2' ); ?>" name="get_field_name( 'headline2' ); ?>" type="text" value="">

<label for="get_field_id( 'blurb2' ); ?>"> <input class="widefat" id="get_field_id( 'blurb2' ); ?>" name="get_field_name( 'blurb2' ); ?>" type="text" value="">

<label for="get_field_id( 'headline3' ); ?>"> <input class="widefat" id="get_field_id( 'headline3' ); ?>" name="get_field_name( 'headline3' ); ?>" type="text" value="">

<label for="get_field_id( 'blurb3' ); ?>"> <input class="widefat" id="get_field_id( 'blurb3' ); ?>" name="get_field_name( 'blurb3' ); ?>" type="text" value="">

<?php } /** * Sanitize widget form values as they are saved. * * @see WP_Widget::update() * * @param array $new_instance Values just sent to be saved. * @param array $old_instance Previously saved values from database. * * @return array Updated safe values to be saved. */ public function update( $new_instance, $old_instance ) { $instance = array(); $instance['headline1'] = ( ! empty( $new_instance['headline1'] ) ) ? strip_tags( $new_instance['headline1'] ) : ''; $instance['blurb1'] = ( ! empty( $new_instance['blurb1'] ) ) ? strip_tags( $new_instance['blurb1'] ) : ''; $instance['headline2'] = ( ! empty( $new_instance['headline2'] ) ) ? strip_tags( $new_instance['headline2'] ) : ''; $instance['blurb2'] = ( ! empty( $new_instance['blurb2'] ) ) ? strip_tags( $new_instance['blurb2'] ) : ''; $instance['headline3'] = ( ! empty( $new_instance['headline3'] ) ) ? strip_tags( $new_instance['headline3'] ) : ''; $instance['blurb3'] = ( ! empty( $new_instance['blurb3'] ) ) ? strip_tags( $new_instance['blurb3'] ) : ''; return $instance; } } // class Header_Slide function register_widgets() { register_widget( 'header_slide' ); } add_action( 'widgets_init', 'register_widgets' );

`

sulla pagina di output ho:

  

Solutions Collecting From Web of "Aiuto con widget personalizzati"

Il tuo codice sembra molto migliore e tutti i tuoi bug sono corretti :-). ( Caveat: non ho esaminato il codice riga per riga, ma l’ho provato rapidamente )

Ci sono comunque due problemi che hai perso e che derivano da quando hai rinominato il tuo widget

  • register_widget( 'header_slide' ); dovrebbe essere register_widget( 'Header_Slide' );

  • the_widget( 'header_slide'); dovrebbe essere the_widget( 'Header_Slide');

Si prega di vedere the_widget() e come viene utilizzato. Ad esempio, il seguente

 the_widget( 'Header_Slide', 'headline1=HEADLINE1&blurb1=BLURB1'); 

uscirà

HEADLINE1

BLURB1

Tuttavia, non utilizzerei the_widget() per visualizzare un widget, preferirei creare una barra laterale e quindi rilasciare il mio widget.

È ansible registrare una barra laterale in modo condizionale per una pagina specifica del modello