<?PHP
/*
Plugin Name: 	Programmez!
Plugin URI: 	http://www.programmez.com/
Description:	Mon premier plugin grace a programmez!
Author:			Programmez Team
Author Uri:		http://www.programmez.com/fhebrard
Licence:		GPL2
Version:		Beta 1
*/

class monPremierPluginProgrammez
{
	//le constructeur
	public function __construct(){
		//notez l'utilisation d'un array pour passer notre méthode en parametre
		add_filter('wp_title',array($this,'fonctionChangeTitre'),20);
	}
	public function fonctionChangeTitle($titreactuel){
		return $titreActuel . ' | Avec mon premier plugin !';
	}
}	
//ne pas oublier d'instancier notre objet
new  monPremierPluginProgrammez();

<?PHP
class Programmez_Widget extends WP_Widget{
	public function __construct(){
		parent::__construct('Programmez_widget','mon widget', array(
			'description'=> 'mon premier widget par programmez'
		));
	}
	public function widget($args, $instance){
		echo ‘mon premier widget’	
	}
}

$args = array(
	'name'          => __( 'Sidebar name', 'theme_text_domain' ),
	'id'            => 'unique-sidebar-id',
	'description'   => '',
        'class'         => '',
	'before_widget' => '<li id="%1$s" class="widget %2$s">',
	'after_widget'  => '</li>',
	'before_title'  => '<h2 class="widgettitle">',
	'after_title'   => '</h2>' );

< ?PHP
public function form($instance){
	$titre = isset($instance['title'])?$instance['title']:'';
	?>
< !—ZONE HTML -->
	<p>
	<label for="<?PHP echo $this->get_field_name('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 $title;?>"/>	
	</p>
	< !—FIN ZONE HTML -->
<?PHP
}

<?PHP
/*
Plugin Name: 		Programmez!
Plugin URI: 		http://www.programmez.com/
Description:		Mon premier plugin grace a programmez!
Author:			Programmez Team
Author Uri:		http://www.programmez.com/fhebrard
Licence:		GPL2
Version:		Beta 1
*/
include_once plugin_dir_path(__FILE__).'/programmez.php';
include_once plugin_dir_path(__FILE__).'/programmez_widget_manager.php';

class MonPremierPluginProgrammez
{
	public function __construct(){
		new Programmez();
		new Programmez_Widget_Manager();
	}
}
new MonPremierPluginProgrammez();

	•	include_once plugin_dir_path(__FILE__) [….] : on inclut notre fichier comportant la class de notre plugin et le fichier qui gère les class de widgets à générer.
	•	Dans le constructeur on instancie nos plugins et notre gestionnaire de widget
	•	On n’oublie pas d’instancier notre class de notre point d’entrée.

	•	Programmez.php : contenant la class de notre plugin qui est instancié dans notre class de notre fichier « programmez_plugin.php »
<?PHP
class Programmez
{
	public function __construct(){
		add_filter('wp_title',array($this,'fonctionChangeTitre'),20);
	}

	public function fonctionChangeTitre($titreActuel){
		return $titreActuel . ' | Avec mon premier plugin !';
	}
}
	•	Notre plugin que nous avons présentez plutôt dans l’article.

	•	Programmez_widget_manager : permet d’enregistrer les widgets à instancié à l’évènement widget_init.
<?PHP
include_once plugin_dir_path(__FILE__).'/programmez_widget.php';

class Programmez_Widget_manager{
	public function __construct()
	{
			add_action('widgets_init',function(){
				register_widget('Programmez_Widget');
			});
	}	
}

	•	On inclut notre fichier contenant la class de notre widget.
	•	Dans le constructeur de notre manager, nous demandons à wordpress lors de l’application de l’action ‘widgets_init’, d’enregistrer notre nouveau widget (noter l’utilisation de fonction anonyme PHP) 

	•	Programmez_widget.php : contient une class exemple pour la génération d’un widget.
<?PHP
class Programmez_Widget extends WP_Widget{
	public function __construct(){
		parent::__construct('Programmez_widget','mon widget', array(
			'description'=> 'mon premier widget par programmez'
		));
	}
	public function form($instance)
	{
		$titre = isset($instance['title'])?$instance['title']:'';
		?>
		<p>
			<label for="<?PHP echo $this->get_field_name('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 $title;?>"/>	
		</p>
		
		<?PHP
	}*/
	public function widget($args, $instance){
		echo $args['before_widget'];
		echo $args['before_title'];
		echo apply_filters('widget_title', $instance['title']);
		echo $args['after_title'];
		?>
		<!--
			NOTRE CODE HTML A INTEGRER AU VISUEL ex un formulaire avec des champs de saisie
		-->
			<span>Hello mon premier widget Programmez !</span>
		<?PHP
		echo $args['after_widget'];
		
	}