Un widget base di WordPress che personalmente non mi piace è quello chiamato Meta, che offre alcuni servizi basilari: link al backend, ai feed di commenti e post ed al sito madre di WordPress.org.
Poiché ritengo molto utile il link al backend, ma non mi interessano gli altri, ho sfruttato il tutorial per creare un custom widget, per generare uno snippet code e creare cosi un widget dedicato al login.
Il codice è stato preso da WordPressBeginner ed adattato di conseguenza.
Vediamolo velocemente:
REGISTRIAMO IL WIDGET
Con questa porzione di codice generiamo l’azione che chiama il widget, e registriamo lo stesso nel gruppo dei widget di WP.
// Register and load the widget
function mck_load_widget() {
register_widget( 'mck_widget_login' );
}
add_action( 'widgets_init', 'mck_load_widget' );
Ora andiamo ad inizializzare la classe che gestirà le funzioni del widget. Partiamo con il metodo __construct(), che richiede alcuni parametri: un ID univoco, il nome del widget, le opzioni, sotto forma di array ed eventuali controlli (non usati in questo caso).
// Creating the widget
class mck_widget_login extends WP_Widget {
function __construct() {
parent::__construct(
// Base ID of your widget
'mck_widget',
// Widget name will appear in UI
__('Login Widget', 'mck_wg_login'),
// Widget description
array( 'description' => __( 'Semplice widget che visualizza esclusivamente il login al sito', 'mck_wg_login' ), )
);
}
Passiamo al metodo dedicato a gestire il front-end del widget, ovvero quello che visualizzerà il widget (che poi è il motivo principale per cui lo creiamo).
E una funzione semplice, che recupera il titolo assegnato nel backend, aggiunge due argomenti necessari ai temi e stampa la chiamata al login di WP.
// Creating widget front-end
public function widget( $args, $instance ) {
$title = apply_filters( 'widget_title', $instance['title'] );
// before and after widget arguments are defined by themes
echo $args['before_widget'];
if ( ! empty( $title ) )
echo $args['before_title'] . $title . $args['after_title'];
?>
<ul>
<?php wp_register(); ?>
<li><?php wp_loginout(); ?></li>
<?php wp_meta(); ?>
</ul>
<?php
#echo __( 'Hello, World!', 'wpb_widget_domain' );
echo $args['after_widget'];
}
Nel pack-end invece andiamo semplicemente a controllare se esiste un valore per la variabile del titolo e creiamo un piccolo form per permetterne l’inserimento e la modifica.
// Widget Backend
public function form( $instance ) {
if ( isset( $instance[ 'title' ] ) ) {
$title = $instance[ 'title' ];
}
else {
$title = __( 'Login', 'mck_wg_login' );
}
// Widget admin form
?>
<p>
<label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
</p>
<?php
}
L’ultima funzione si occupa di gestire le istanze del widget.
// Updating widget replacing old instances with new
public function update( $new_instance, $old_instance ) {
$instance = array();
$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';
return $instance;
}
} // Class mck_widget ends here
Se tutto questo non interessa, vi basta salvare il file qui sotto ed importarlo nei vostri CodeSnippet