[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’);

---
### Comments:
#### 
[xarold](http://www.xarold.com "[email protected]") - <time datetime="2013-10-28 10:03:10">Oct 1, 2013</time>

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
<hr />
updatedupdated2024-01-282024-01-28