Tym-Project

From: SUPINFO
To: Tous
Subject: IT

Créer Une Simple Extension Wordpress

Si vous administrez un blog Wordpress, vous savez certainement qu’il existe un nombre très important d’extensions (plugins). De la plus simple à la plus complexe, vous trouverez de tout…mais pas forcément ce dont vous avez besoin. Je me suis donc mis en tête de développer un ou deux modestes plugins pour mon usage personnel.

Bien qu’assez simple, le processus contient toutefois un ou deux pièges… Je vais vous présenter ici comment je génère le texte de légende en dessous des images dans mes articles. J’avais prévu de traduire une partie de mes articles, donc il est aussi “multilingue”. Concrètement il ne fait qu’afficher un texte avec la mise en forme définie dans la balise div, mais j’aurai très bien pu plutôt donner une classe CSS à cette dernière et l’intégrer dans le thème ! L’extension étant (très) succincte, elle tient dans un seul fichier, voici comment il se décompose avec tout d’abord l’en-tête :

1
2
<?php /* Plugin Name: Legend Er Plugin URI: http://www.tym-project.fr/blog Description: An automatic legend generator Version: 1.0
Author: Tym Author URI: http://www.tym-project.fr/blog License: CC */

Bien qu’elle soit en commentaire, elle est en fait lue par Wordpress pour afficher les informations dans la page de plugins. Les champs parlent d’eux- mêmes ! Comme mon plugin est intégré dans l’article manuellement (je ne veux pas forcément l’appliquer sur toutes les images par exemple), il faut définir un Shortcode. De la forme [shortcode] ou [shortcode]...[/shortcode], il permet de définir où ou sur quoi doit s’appliquer l’extension. Dans mon cas je pourrai appeler le plugin avec [legend] (lié à la fonction legender), pas besoin de le fermer car il ne s’applique pas sur du texte existant :

add_shortcode('legend', 'legender');

Ensuite la fonction qui crée la légende en elle-même :

1
2
3
4
5
6
7
8
9
function legender ($atts) {
    $ln=$atts['ln'];
    if ($ln == "en"){
        return '<div style="text-align: center;"><em>(Click to zoom in)</em></div>';
    }
    if ($ln == "fr"){
        return '<div style="text-align: center;"><em>(Cliquez pour agrandir)</em></div>';
    }
} ?>

Elle prend donc un paramètre : ln, soit la langue (“fr” ou “en”) stockée dans un tableau clé/valeur. Je vous parlais de petits pièges, en voilà un : $atts est un passage obligé, il ne faut pas nommer cette variable autrement !

Voici donc le code complet de l’extension :

1
2
3
4
5
6
7
8
9
10
11
12
<?php /* Plugin Name: Legend Er Plugin URI: http://www.tym-project.fr/blog Description: An automatic legend generator Version: 1.0
Author: Tym Author URI: http://www.tym-project.fr/blog License: CC */
add_shortcode('legend', 'legender');

function legender ($atts) {
    $ln=$atts['ln']; if ($ln == "en"){
        return '<div style="text-align: center;"><em>(Click to zoom in)</em></div>';
    }
    if ($ln =="fr"){
        return '<div style="text-align: center;"><em>(Cliquez pour agrandir)</em></div>';
    }
} ?>

libre à vous de l’utiliser, modifier…

Bon dev’ ;-)

Comments