Ecrire un plugin pour WordPress
Il arrive quelques fois de ne pas trouver son bonheur dans les extensions pour Wordpress ou de vouloir en adapter une. Dans cet article nous allons voir comment créer notre premier plugin pour wordpress en s’aidant de la documentation officielle. Ce plugin affichera les derniers commentaires approuvés de votre blog. Nous personnaliserons ce plugin en le déclarant comme widget. Dans un prochain tutoriel nous ajouterons un menu dans l’administration et un peu de javascript pour le rendre plus attractif (à venir).
Pour ce widget nous aurons besoin :
- d’un éditeur de code utilisant la coloration syntaxique (Notepad++ fera très bien l’affaire)
- d’une installation de Wordpress > 2.5 (en local pour tester notre plugin)
- de la documentation de Wordpress
Quelques remarques avant de commencer
La première tâche à effectuer est de réflechir au nom de notre plugin : pour nommer notre fichier (qui sera un fichier php) et le nom de nos fonctions. Nous choisirons tutcom.php pour tutoriel derniers commentaires. Attention, veillez à donner un nom unique à votre fichier, sans quoi votre fichier pourrait entrer en conflit avec un autre fichier.
Pour que notre plugin fonctionne, il faut l’installer dans un répertoire spécifique de wordpress. En l’occurence, il s’agit de /wp-content/plugins. Créons un répertoire du même nom que notre plugin et enregistrons-le à l’intérieur. En général il est préférable de créer un répertoire pour plus de clarté (même si vous voyez que le plugin Hello Dolly n’est pas inclus dans un répertoire). Ceci vous permettra par exemple, d’ajouter d’autres répertoires (comme un dossier CSS) afin de bien distinguer que ceux-ci appartiennent à votre plugin.
Enfin si vous souhaitez proposer votre plugin sur le site officiel de WordPress, il faudra créer un fichier readme.txt.
Commençons notre plugin
Commençons par quelques lignes de php.
Concrètement, ce code est un commentaire qui sera interprété par Wordpress. Puisqu’une image vaut milles mots, voyons comment WordPress interprètera nos informations.
Voici, ce que devriez voir en allant dans la section plugin de votre Wordpress. Tous les champs que nous avons renseignés apparaissent dans la présentation du plugin.
Implentons les fonctions de notre plugin
Pour plus de clarté dans notre plugin, nous allons écrire notre code sous forme de fonctions php. Notre première fonction servira à interrogger la base de données pour récupérer nos articles populaires. Mais avant de l’écrire regardons comment se comporte les accès à la base de données avec Wordpress.
Wordpress utilise une classe ezSQL. Tous les accès à la base de données se font sous la forme $wpdb->lenomdelafonction (comme query, get_var, get_row, get_col…). Vous trouverez plus d’informations en lisant cette partie sur le codex de WordPress, en regardant directement le code de la classe dans le dossier wp-includes\wp-db.php ou sur le site de l’auteur Justin Vincent. Cette classe doit faire appel à une variable avant d’être utilisée (global $wpdb), sans quoi tous vos appels du type $wpdb->query(query) et même la connexion à la base de données ne seraient pas initialisés.
Ci-dessous une capture de la table comments de Wordpress.
Et le début de notre code de notre fonction.
1 2 3 4 5 6 7 | <?php global $wpdb; $query = "comments WHERE comment_approved= '1' ORDER BY comment_date DESC LIMIT 5"; // Et nous stockons le résultat exécuté dans $comments $comments = $wpdb->get_results($query); } ?> |
Nous avons maintenant notre requête, qui demande à la base de données de sélectionner la table comments où les commentaires ont été approuvés, organisés par date et enfin avec une limite d’extraction de 5 commentaires. Grâce à la classe ezSQL nous récupérons les résultats avec la fonction $wpdb->get_results et nous assignons ce résultat dans la variable $comments. Il ne nous reste plus qu’à faire une boucle pour récupérer le résultat :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php global $wpdb; $query = "comments WHERE comment_approved= '1' ORDER BY comment_date DESC LIMIT 5"; // Et nous stockons le résultat exécuté dans $comments $comments = $wpdb->get_results($query); // si nous avons des résultats if ($comments) { // alors on extracte les données foreach ($comments as $comment) { // Nous récupérons le nom de l'auteur $from = stripslashes($comment->comment_author); // Puis son url si le commentateur l'a renseignée $urlauthor = stripslashes($comment->comment_author_url); // le contenu du commentaire $comment_content = stripslashes($comment->comment_content); // et enfin l'id du commentaire pour faire un lien $permalink = get_permalink($comment->comment_post_ID); $output .= '<li><a href="' . $urlauthor . '">' . $from . '</a> dit <a href="' . $permalink . '">' . $comment_content . '</a></li>' . "\n"; } // sinon si comments ne contient pas de commentaire } else { $output .= "<li>None found</li>\n"; } // enfin nous affichons notre résultat echo $before_widget . $before_title . $title . $after_title . '<ul>' . $output . '</ul>' . $after_widget; } ?> |
Nous voilà avec une fonction qui est déjà prête à l’emploi mais qui peut encore être améliorée. Cette fois si vous activez le plugin il suffira à partir de n’importe quel endroit de votre template de faire appel à la fonction sous cette forme, pour voir apparaître les derniers commentaires de votre blog.
Faire du plugin un widget
Seulement deux fonctions de Wordpress suffisent pour créer un widget. Wordpress fournit une liste d’API pour simplifier la vie du codeur. Tout d’abord nous devons initialiser notre widget grâce à la fonction register_sidebar_widget(”nom du widget”, “nom de la fonction”) puis ajouter une action quand le plugin est chargé add_action(”plugin_loaded”, “nom de notre fonction”). Voici ce que celà donne :
1 2 3 4 5 | function init_tutcom() { register_sidebar_widget("derniers commentaires", "tutcom"); } add_action("plugins_loaded", "init_tutcom"); |
Aller plus loin
Voici quelques idées pour se familiariser avec ezSQL. Au lieu d’afficher les 5 derniers commentaires, essayez d’afficher les 5 derniers articles ou 5 articles au hasard.
Pour aller plus loin dans l’API essayez de créer une fonction qui permettra d’afficher un menu dans l’administration pour ce widget, permettant par exemple de sélectionner le nombre de requêtes à afficher, de définir un titre… Ce menu sera déclaré comme suit add_action(’admin_menu’, ‘nom de la fonction’)
Trackbacks & Pingbacks
- Ecrire un plugin pour WordPress
- comment faire un plugin pour wordpress | jaiunblog.com | j'ai un blog
- Centre de Ressources des Espaces Publics Numériques de Wallonie : Tutoriel WordPress : 50 tutoriels WordPress gratuits
- Plugin RSS By Author - mon premier plugin | LE GLOB DE BARGEO
- Wordpress : 50 tutoriels gratuits à télécharger « Groupekeredern’s Blog




























Intéressant. J’ai survolé parce qu’il est tard, mais je marque la page.
Mis en favori, merci.
slt, j’ai une idée de plugin qui serait à mon avis repris par pas mal de blog mais le soucis, c’est que je ne suis pas très bon en php…
Le projet t’intéresse-t-il? ^^
Bonjour foxo,
Les projets sont toujours intéressants, vous pouvez soit l’exposer ici ou encore me contacter par e-mail.
Intéressant comme article ! Cela m’enlève un peu le brouillard dans la compréhension du fonctionnement des plug-in wordpress .
Merci !!!
Merci goosy,
D’ailleurs je dois toujours écrire la deuxième partie…
Merci,Mis en favori cause il est tres long
Salut a tous, le tuto m’a beaucoup interresse,seulement je n’ai pas compris comment faire appel a la fonction dans le template.