Vous êtes sur la page 1sur 6

9/10/2017 Crer des plugins - Propulsez votre site avec WordPress

Bienvenue sur OpenClassrooms ! En poursuivant votre navigation, vous acceptez l'utilisation de cookies. En savoir OK
plus

S'inscrire Se connecter

Accueil Cours Propulsez votre site avec WordPress Crer des plugins

Propulsez votre site avec WordPress



15 heures Facile Licence

Crer des plugins

Connectez-vous ou inscrivez-vous pour bnficier de toutes les fonctionnalits de ce cours !

Aprs avoir vu thmes, nous aborderons ici le second point majeur de WordPress : les plugins. Le support de ces
modules additionnels a pour objectif de vous o rir un moyen sans limite de rajouter de nouvelles fonctionnalits
WordPress, qu'elles soient spcifiques votre site ou bien rutilisables les autres. Grce aux plugins, vous pourrez
ajouter tout ce dont vous avez besoin. Aprs avoir abord les principes de la cration d'un plugin sous WordPress,
nous suivrons pas pas les tapes de cration travers une tude de cas.

Dclarer le plugin
De mme que les thmes, les plugins ont une structure de base trs simple. Seul un minimum d'actions doit tre

excut pour pouvoir les dclarer, et c'est ensuite vous d'y rajouter des fonctions pour complter leur structure.

Les plugins doivent tous tre situs dans le dossier wp-content/plugins, et peuvent tre constitus d'un ou
plusieurs fichiers.

Tout d'abord, crons un dossier zero dans lequel seront placs les fichiers PHP du plugin, ainsi qu'un premier
fichier zero.php.

Ce premier fichier ne doit pas obligatoirement tre nomm comme le dossier parent, mais c'est prfrable
par convention.

Pour que le plugin soit reconnu par WordPress, il faut ncessairement dclarer au moins son nom dans le fichier
principal. Nous faisons cela via un commentaire au dbut du fichier.

php

https://openclassrooms.com/courses/propulsez-votre-site-avec-wordpress/creer-des-plugins 1/6
9/10/2017 Crer des plugins - Propulsez votre site avec WordPress

1 <?php
2 /*
3 Plugin Name: Nom du Plugin
4 */

Si vous souhaitez donner plus d'informations propos de votre plugin, notamment si vous souhaitez le distribuer,
il existe d'autres informations qu'il est recommand d'indiquer la suite du nom.

Plugin URI : l'adresse du site de votre plugin dcrivant son fonctionnement et donnant des informations
complmentaires ;
Description : un paragraphe de description du plugin, a ich en parcourant la liste des plugins ;
Version : la version du plugin ;
Author : votre nom ;
Author URI : l'adresse de votre site ;
License : un nom de licence pour le code du plugin.

Nous pouvons donc avoir un en-tte comme celui-ci :


php

1 <?php
2 /*
3 Plugin Name: Zero plugin
4 Plugin URI: http://zero-plugin.com
5 Description: Un plugin d'introduction pour le dveloppement sous WordPress
6 Version: 0.1
7 Author: Midnight Falcon
8 Author URI: http://votre-site.com
9 License: GPL2
10 */

Votre plugin est maintenant reconnu par WordPress ! Pour le vrifier, allez dans l'interface d'administration. Vous
devez le voir apparatre dans la liste des extensions. Si c'est le cas, activez-le (voir la figure suivante) !

Le plugin est reconnu par WordPress

Nos premires fonctions


crivons maintenant notre premire fonction dans ce plugin. Tout ce qui est dclar dans le plugin peut tre appel
depuis nimporte quel autre endroit du code, que ce soit depuis un thme ou un autre plugin. Il est donc tout fait
possible pour un plugin dutiliser les fonctions dun autre plugin, si celui-ci a t activ sur votre site.

Malgr cela, il est prfrable dutiliser au maximum le systme modulaire de WordPress pour appeler vos fonctions,
comme nous lavons fait plus tt avec les filtres et la fonction add_filter(). De cette faon, il nest pas ncessaire
dappeler les fonctions du plugin en dehors de celui-ci, ce qui limite les dpendances et les besoins de crer des
https://openclassrooms.com/courses/propulsez-votre-site-avec-wordpress/creer-des-plugins 2/6
9/10/2017 Crer des plugins - Propulsez votre site avec WordPress

appels depuis lextrieur. En particulier, utiliser les filtres vous permet de rendre votre plugin compatible avec
nimporte quel thme de votre site, puisquil enregistra de lui-mme les actions quil doit e ectuer.

Rajouter un filtre simple

Mise jour aot 2017 : depuis la version 4.4 de WordPress, la gestion du titre est di rente. Lisez cette page
sur Stackoverflow pour plus d'informations.

Notre premire tche sera de modifier sur toutes les pages lattribut <title> pour indiquer que le plugin est
activ. Pour ce faire, le filtre wp_title, appel avec la fonction the_title(), est idal pour nous.
php

1 <?php
2 add_filter('wp_title', 'zero_modify_page_title', 20) ;
3 function zero_modify_page_title($title) {
4 return $title . ' | Avec le plugin des zros !' ;
5 }

Pour viter au maximum les conflits dans les noms de fonctions avec un autre plugin, il est conseill de les
prfixer, ici avec zero.

Dornavant, tant que le plugin sera activ, toutes les pages verront leur titre mis jour comme crit dans la
fonction. En allant par exemple sur une page intitule propos de nous , nous trouvons le code HTML suivant :
html

1 <head>
2 <!-- ... -->
3 <title> propos de nous | Wordpress pour les zros | Avec le plugin des zros !</title>

Utiliser une structure objet


Afin dutiliser toute la puissance de PHP dans notre plugin, nous allons structurer notre plugin laide de classes.
Ce nest bien entendu pas obligatoire, un plugin peut tout fait fonctionner avec des fonctions dans lespace
global, mais la programmation objet permet de mieux organiser une application de grande ampleur, nous allons
donc tout de suite restructurer le code de notre plugin en ce sens.

Nous crons donc dans le fichier zero.php une classe Zero_Plugin avec pour mthode le filtre que nous avions
utilis prcdemment.
php

1 <?php
2 class Zero_Plugin
3 {
4 public function __construct()
5 {
6 add_filter('wp_title', array($this, 'modify_page_title'), 20) ;
7 }
8
9 public function modify_page_title($title)
10 {
11 return $title . ' | Avec le plugin des zros !' ;

https://openclassrooms.com/courses/propulsez-votre-site-avec-wordpress/creer-des-plugins 3/6
9/10/2017 Crer des plugins - Propulsez votre site avec WordPress

12 }
13 }
14
15 new Zero_Plugin();

Pensez bien instancier votre classe la fin du fichier avec l'instruction "new Zero_Plugin()", afin
d'initialiser le plugin ! Sans cela le plugin ne sera pas fonctionnel.

Comme vous le voyez, lutilisation de la fonction add_filter() a t lgrement modifie pour la spcification de la
fonction de rappel. tant donn que nous avons dplac la fonction modify_page_title() dans un objet, il faut aussi
fournir linstance de lobjet pour pouvoir appeler la fonction ! Ceci se fait en passant comme argument un tableau
avec linstance de lobjet utiliser et le nom de la mthode de classe appeler.

Une structure multifichiers


Toujours dans le but de structurer votre plugin, vous aurez probablement besoin dcrire du code dans di rents
fichiers, qui contiendront par exemple di rentes classes si vous choisissez dutiliser des objets.

Dans une application PHP, lutilisation de plusieurs fichiers passe par linclusion de ceux-ci au travers dune
directive include ou include_once. Au sein de WordPress, seul le fichier principal dun plugin activ (celui qui
dclare le nom du plugin) est inclus automatiquement au chargement de lapplication. Tous les autres fichiers
doivent donc tre inclus par le dveloppeur sil dsire les utiliser. Dans le cas contraire, les ventuelles classes et
mthodes contenues ne seront pas utilisables.

La tche de notre fichier zero.php sera donc plus particulirement de charger les fichiers ncessaires au
chargement du plugin.
Pour illustrer cela, nous allons une dernire fois rorganiser la structure de notre code : une nouvelle classe
Zero_Page_Title, dans un fichier pagetitle.php, contiendra le filtre de titre que nous avons cr et la classe
Zero_Plugin se chargera dinstancier Zero_Page_Title (et toute autre classe que nous pourrons ajouter
ultrieurement). De cette faon, nous avons un point dentre qui prend en charge les crations dobjets, eux-
mmes e ectuant des traitements spcifiques, ce qui facilitera lajout de fonctionnalits.

Le code final des deux classes est donc le suivant.


php

1 <?php
2 class Zero_Plugin
3 {
4 public function __construct()
5 {
6 include_once plugin_dir_path( __FILE__ ).'/page_title.php';
7 new Zero_Page_Title();
8 }
9 }

php

1 <?php
2 class Zero_Page_Title
3 {
4 public function __construct()
5 {

https://openclassrooms.com/courses/propulsez-votre-site-avec-wordpress/creer-des-plugins 4/6
9/10/2017 Crer des plugins - Propulsez votre site avec WordPress

6 add_filter('wp_title', array($this, 'modify_page_title'), 20) ;


7 }
8
9 public function modify_page_title($title)
10 {
11 return $title . ' | Avec le plugin des zros !' ;
12 }
13 }

Un plugin complet


Il est maintenant temps daller plus loin dans la cration de plugin en exploitant au maximum les possibilits
o ertes par WordPress. Nous allons pouvoir commencer rentrer dans les sujets avancs de la cration de plugin
autour dun objectif prcis : la mise en place dun plugin de newsletter, que nous crerons au fil des chapitres
suivants.

Les objectifs
Le plugin que nous allons mettre en place est relativement simple. Il consiste proposer aux visiteurs de sinscrire
sur le site en fournissant leur adresse email afin de recevoir une newsletter concernant lactualit du site.

Plusieurs sujets entrent en uvre, commencer par la cration dun widget, a ich sur toutes les pages, dans le
but de rcuprer les adresses email. La base de donnes devra comporter une table supplmentaire afin de stocker
la liste des adresses qui il faut envoyer la newsletter. Enfin, linterface dadministration permettra
ladministrateur de dfinir le contenu de cet email, son objet, ladresse email de lexpditeur et un bouton pour
dclencher lenvoi.

Le chantier couvrira donc les aspects majeurs de WordPress, il est temps de s'y attaquer sans plus tarder !

La classe Zero_Newsletter
Afin de garder une structure cohrente dans notre module, nos allons crer une nouvelle classe Zero_Newsletter
qui se chargera de tout le code concernant la fonctionnalit de newsletter. Plaons-la dans un fichier
newsletter.php, qui sera pour linstant assez simple.
php

1 <?php
2 class Zero_Newsletter
3 {
4 public function __construct()
5 {
6 }
7 }

Noubliez pas de modifier le constructeur de la classe Zero_Plugin pour instancier un nouvel objet Zero_Newsletter.
php

1 <?php
2 class Zero_Plugin
3 {
4 public function __construct()
5 {
6 //...
7 include_once plugin_dir_path( __FILE__ ).'/newsletter.php';
8 new Zero_Newsletter();
9
https://openclassrooms.com/courses/propulsez-votre-site-avec-wordpress/creer-des-plugins 5/6
9/10/2017 Crer des plugins - Propulsez votre site avec WordPress

10 //...

Tous les plugins sont placs dans le rpertoire wp-content/plugins.


Le plugin est dclar avec un commentaire dans l'en-tte du fichier principal.
Un plugin doit tre de prfrence dcoup en fichiers suivant les fonctionnalits ajoutes.

Quiz : Quiz 2 Crer des widgets

Le professeur Dcouvrez aussi ce cours en...


Julien Chichignoud
Diplm de Centrale Lille et Ingnieur d'tude et
dveloppement

Premium
eBook Livre papier PDF

OpenClassrooms Professionnels En plus Suivez-nous


Qui sommes-nous ? A iliation Crer un cours Le blog OpenClassrooms
Fonctionnement de nos coursPartenaires CourseLab
Recrutement For Business Conditions Gnrales d'Utilisation
Nous contacter

English Espaol

https://openclassrooms.com/courses/propulsez-votre-site-avec-wordpress/creer-des-plugins 6/6

Vous aimerez peut-être aussi