Lisez les derniers articles:

Pour rappel, cet article fait partie de la série intitulée Créer son plugin pour WordPress

  1. Introduction au plugins
  2. Le squelette d’un Plugin
  3. Activation, Hooks & Filtres
  4. Widgets,  définition

    1. Widgets, définition

    Un widget est, en fait, simplement un plugin qui affichera des informations dans un bloque sur votre barre latéralle. Ceci étant dit, il n’y a qu’une action à utiliser pour créer un widget.

    Cette action est nommée widgets_init – vous pouvez donc l’apeller de cette façon : add_action(‘widgets_init’, function_name);

    Une fois ceci effectué, vous devrez alors « enregistrer » deux fonctions, mais uniquement si le système de sidebar est bien actif. Cet enregistrement s’éffectue dans la fonction précédement déclarée.

    Voici un bout de code qui fera l’affaire :

    function function_name() {
    	if ( !function_exists('register_sidebar_widget') || !function_exists('register_widget_control') )
    		return;
    	register_sidebar_widget(string $name,callback $function);
    	// register_sidebar_widget prend en paramètres le nom du widget ainsi que la fonction qui gère l'affichage.
    	register_widget_control(string $name, callback $function2);
    	// register_widget_control prend en paramètres le nom du widget ainsi que la fonction qui gère les optiosn (visible depuis l'onglet apparence dans l'administration).
    }

    Voila, c’est a peu près tout ce que vous avez besoin de savoir pour créer un plugin. Le reste n’est pas spécifique aux widgets (options, branchements, appels à l’API, etc…)

    2. Widget d’exemple

    Ci-dessous vous trouverez un exemple tout simple de widget qui n’affichera qu’un Hello World ainsi que la possibilité de modifier le titre du widget (dans les options).

    /*
    Plugin Name: ZenDreams_Sample_Widget
    Plugin URI: http://www.zen-dreams.com/
    Description: Sample Widget
    Version: 1.0
    Author: Anthony PETITBOIS
    Author URI: http://www.zen-dreams.com/
    */
    class myWidget {
    
    	function myWidget() {
    		add_action('widgets_init', array(& $this, 'init_widget'));
    	}
    
    	function init_widget() {
    		if ( !function_exists('register_sidebar_widget') || !function_exists('register_widget_control') )
    			return;
    		register_sidebar_widget(array('myWidget','widgets'),array(& $this, 'widget'));
    		register_widget_control(array('myWidget', 'widgets'), array(& $this, 'widget_options'));
    	}
    
    	function widget($args) {
    		global $wpdb;
    
    		$WidgetTitle=get_option('mywidget_options');
    		extract($args);
    
    		echo $before_widget.$before_title.$WidgetTitle.$after_title;
    		echo 'Hello World !';
    		echo $after_widget;
    	}
    
    	function widget_options() {
    		if ($_POST['mywidget_options']) {
    			$option=$_POST['mywidget_options'];
    			update_option('mywidget_options',$option);
    		}
    		$option=get_option('mywidget_options');
    		echo '<label for="mywidget_options">Title : <input id="mywidget_options" name="mywidget_options" type="text" value="'.$option.'" /></label>';
    	}
    }
    $myWidgetVariable= new myWidget ();


    1. ebouilleur (Reply) on Mardi, septembre 16, 2008

      Bonjour,

      Avez vous tester votre code?
      J’en doute fortement… => il bug

      :)

    2. Anthony (Reply) on Mardi, septembre 16, 2008

      Effectivement, si tu te contente de faire un copier/coller du texte, cela ne risque pas de fonctionner. En même temps, il suffisait de transformer le &amp ; en & tout court…

    3. ebouilleur (Reply) on Mardi, septembre 16, 2008

      Je n’ai pas testé ca, car je me disais que c’était peut etre normal, après avoir fait plusieurs test j’ai laissé tombé

    4. Kitiz (Reply) on Mercredi, septembre 17, 2008

      Bonjour,
      Merci pour ces tutos mais certains points restent flou, est-ce que tu pourrais nous en dire un peu plus stp sur les différentes variables globales qui existent ?

      Et je voulais savoir également si on était obligé de passer par des classes pour le code soit propre ?

      je dois créer un plugin et pour cela, j’ai déjà conçut toutes les pages de façon à ce que je travaille d’abord le code avant de l’intégrer à WP.
      Est-ce que tu as des conseils à me donner par quoi commencer ?

    5. Anthony (Reply) on Mercredi, septembre 17, 2008

      Kitiz,

      Non, tu n’es pas obligé de passer par des classes pour que le code soit propre, un code en fonction peut-être propre. Personellement j’avoue préferer le code en classes.

      Les variables globales, j’y viendrais dans mon prochain tutoriel justement.

      Des conseils pour commencer ? Regarde quelques plugins simples et leur fonctionnement, et surtout, lire, lire et relire la doc pas très bien faite du Codex

    6. Kitiz (Reply) on Jeudi, septembre 18, 2008

      Ok, merci beaucoup.
      Euh, je ne connais pas trop le fonctionnement des classes. Est-ce que tu pourrais nous faire un tuto dessus ? :$

      à quand le prochain tuto parce que j’avoue être assez impatiente étant donné qu’ils sont en français et compréhensible à 100%.

      Encore Merci :-)

    7. Titomus (Reply) on Lundi, septembre 22, 2008

      Merci Anthony pour ces tutos sur les plugins !

      Moi qui cherchait un nouveau truc pour faire du viral ;)

      Je suis servi, je m’y mets demain :)

      Merci encore

      Jérémy

    8. Saliem (Reply) on Vendredi, janvier 23, 2009

      I’m just starting to write my own wordpress plugin. Thank you for writing up such a clear explanation.