Mon premier plugin WP
Wordpress est bien pratique pour mettre en oeuvre un blog rapidement et facilement. Pourtant, il ne fourni pas toujours les fonctionnalités adaptées à nos besoins. Dans mon cas, j’aimerais répertorier et afficher des références de la même manière que dans les publications, comme au sein d’un document édité en LaTeX par exemple.
Je me suis donc naturellement tourné vers les plugins de wordpress. Pas besoin dans mon cas d’un plugin très compliqué, juste qui récupère les balises spéciales qui vont encadrer mes références, les numéroter et lister mes références en bas d’article (ou de page). J’ai fais un rapide tour d’horizon pour voir si je pouvais utiliser un plugin existant, mais ma recherche s’est avérée infructueuse. J’ai donc décidé de mettre les mains dans le cambouis et de le créer moi même!
Tous les plugins possèdent une entête commune qui permet d’afficher leurs informations sur la page des extensions dans l’administration de Wordpress. Les différents champs sont assez explicites et je ne les détaillerai pas. Dans mon cas, l’entête est la suivante :
<?php /* Plugin Name: wp-refs Plugin URI: http://www.charles-guillemot.info Description: Un plugin qui permet de g&amp;eacute;rer les r&amp;eacute;f&amp;eacute;rences au sein des pages et articles de votre blog. Author: Charles Guillemot Version: 1.0 Author URI: http://www.charles-guillemot.info */
J’avais pensé au début utiliser un shortcode pour remplacer mes références, mais je ne voyais pas comment insérer leur liste à la fin de l’article. Du coup, nous allons avoir recours à un hook. Notons qu’il existe 2 sortes de hook dans wp, les filtres et les actions. Les premiers vont permettre de modifier le comportement de wp alors que les seconds vont étendre ce même comportement. Comme nous pouvons le voir dans la littérature, il est souvent possible de faire une chose en utilisant l’un ou l’autre de ces hooks. Pour l’expliquer rapidement, voici l’exemple utilisé dans le livre de Francis Chouquet [1] qui permet d’ajouter un copyright en bas d’un article. Ainsi, on peut le faire en utilisant une action, qui consiste à ajouter automatiquement le copyright au texte de l’article lors de son enregistrement et de son insertion dans la base de données. Avec un filtre, on insère dynamiquement le copyright au contenu de l’article lors de son affichage sur le navigateur du client.
Dans le cas qui nous intéresse, je pense que le filtre est la meilleure solution puisqu’il nous permettra, dans un premier temps, de ne polluer ni la structure de mes posts ni ma base de données avec des données superflues, et dans un deuxième temps, de changer facilement la façon de gérer nos références dans l’avenir.
Pour ajouter un filtre, on utilise la fonction add_filter, qui admet généralement 2 paramètres. Le premier est le nom du hook rechercher, et le deuxième est la fonction qui sera amenée à être exécutée lors de l’application de ce filtre.
add_filter('the_content', 'refs');
Il me reste donc à écrire la fonction refs qui se chargera de traiter nos références présents dans nos articles.
function refs( $text ) {
$i = 0;
preg_match_all( '#\\\cite\{(.*?)\}#', $text, $refs );
if(count( $refs[1] )!=0)
$text .= "<p><h3 id=\"refs\">Références</h3>";
for( $i = 0; $i < count( $refs[1] ); $i++ )
$j = $i + 1;
$text = str_replace( $refs[0][$i], "[$j]", $text );
$text .= "<span class=\"ref\">[$j] ";
$text .= $refs[1][$i]."</span>";
}
if(count( $refs[1] )!=0)
$text .= "</p>";
return $text;
}
Voilà, notre plugin fonctionne mais l’affichage reste encore à désirer. En effet, nous nous retrouvons avec un gros bloc de texte à la fin de l’article et on ne peut dire que c’est très sympathique pour les yeux. On va donc s’en occuper dès à présent, et le plus simple à mon avis est de définir un nouveau style css au sein d’une fonction que nous insérerons grâce à une action. Pour se faire, nous utilisons la fonction add_action, qui s’utilise en tout point de la même manière que add_filter.
add_action( 'wp_head', 'refs_css' );
La fonction refs_css n’est pas très compliquée en elle-même : un style pour le titre, et un style pour chaque entrée.
function refs_css() {
echo <style type='text/css'>
#refs{
color: #7B797A;
margin-bottom : 10px;
margin-top : 20px;
}
.ref{
margin-left: 30px;
margin-right: 30px;
margin-bottom: 5px;
display: block;
color: #7B797A;
text-align: justify;
}
</style>
}
?>
Voilà le plugin est terminé et est normalement opérationnel. En effet, j’ai développé ce plugin pour Wordpress 2.7, mais vu la simplicité des fonctions utilisées, je ne pense pas que des problèmes surviendront avec les versions ultérieures. Si le cœur vous en dit, téléchargez le, essayez le et redites moi si tout va bien.
Références
[1] Francis Chouquet, Amaury Balmer, Xavier Borderie, Wordpress – toutes les clés pour créer, maintenir et faire évoluer votre blog, Le campus, PEARSON, ISBN: 978-2-7440-2287-6Aucun commentaire
