[WordPress] Créer un widget pour votre thème !

[WordPress] Créer un widget pour votre thème !

Parfois on use et on abuse de la ruse consistant à ajouter du code dans le fichier sidebar.php pour forcer l’utilisation de « pseudo-widget » dans notre thème.

Moi je voulais que le code mis dans mon sidebar.php puisse être un vrai widget et que je puisse le placer dans n’importe quelle sidebar.

Je me suis donc penché sur la question et voila comment procéder :

Je commence par créer un fichier lib/widgets.php dans le dossier de mon thème.

class My_First_Widget extends WP_Widget {
	function My_First_Widget() {
	//Constructor
		$widget_ops = array('classname' => 'widget_my_first_widget', 'description' => 'Faire un Hello World en widget !');
		$this->WP_Widget('my_first_widget','[WIDGET] Hello World',$widget_ops);
	}
	function widget($args, $instance) {
	// prints the widget
		extract($args, EXTR_SKIP);
		echo $before_widget;
		
		$title = empty($instance['title']) ? ' ' : apply_filters('widget_title', $instance['title']);
		
		echo $before_title . $title . $after_title; 
		?>
		<H1>Hello World !!!</H1>
		<?php
		
		echo $after_widget;
	}
	function update($new_instance, $old_instance) {
	//save the widget
		$instance = $old_instance;
		
		$instance['title'] = strip_tags($new_instance['title']);
		
		return $instance;
	}
	function form($instance) {
	//widgetform in backend
		$instance = wp_parse_args( (array) $instance, array('title' => ''));
		
		$title = strip_tags($instance['title']);
		
		?>
		<p>Affiche un Hello World dans un Widget !.</p>
		<p><label for="<?php echo $this->get_field_id('title'); ?>">Titre: <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo attribute_escape($title); ?>" /></label></p>
		
		<?php
	}
}

register_widget('My_First_Widget');

Puis je l’ai inclus dans le code de mon fichier functions.php :

include('lib/widgets.php');

Après cela, il suffit de ce rendre dans le gestionnaire de widget de WordPress pour voir apparaître le widget !

Un beau widget fait maison !

One thought on “[WordPress] Créer un widget pour votre thème !

  1. Merci de votre aide par contre cela ne fonctionne pas chez moi avec include(‘/lib/widget-login.php’) ça met une erreur. Mais si je copie directement le code dans functions.php j’ai aucun soucis. Bonne journée

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.