« Beware Flying Footballs :: Cartographie du site »
WordPress est étonnant de simplicité lorsqu’il s’agit de développer de nouveaux plugins. Cependant, il convient de suivre un certains nombre de bonnes pratiques.
__() et _e() et déclarer un domaine pour votre plugin.
Dans le squelettes suivant, je vous propose un petit coup de pouce pour mettre en place vos plugins. Copiez ce code dans un nouveau fichier et créez votre plugin…
Dans l’exemple proposé, le plugin va ajouté à la fin de chaque billet le nom du plugin. Cen’est pas très utile mais ça permet de faire un exemple.
/*
Plugin Name: Nom du Plugin
Plugin URI: http://www.example.com/votre_plugin
Description: Ce que fait votre plugin en quelques mots.
Version: 1.0
Author: Votre Nom
Author URI: http://www.example.com
*/
/*
Squelete de plugin : Mode d'emploi
1. Remplir le cartouche en début de fichier, ce sont les informations qui apparaissent dans la description du plugin dans WordPress
2. Remplacer {{VotrePlugin}} par le nom de votre plugin composé de lettres (sans accents), chiffre, underscore (_)
3. Ajouter vos fonctions dans la partie à éditer
4. Gérer le contenu de la page d'aide de votre plugin (fonction AdminHelpPage)
5. (facultatif) Gérer l'installation options de paramétrage, tables... (fonction install)
*/
class {{VotrePlugin}} {
var $domain = '';
var $version = '1.0'; //Changer pour correspondre à la version courante
var $option_ns = '';
var $options = array();
// Raccourci interne pour ajouter des actions
function add_action($nom, $num = 0) {
$hook = $nom;
$fonction = $nom;
if(!$num) { $fonction .= $num; }
add_action($hook, array(&$this, 'action_'.$nom));
}
function {{VotrePlugin}}() {
// Initialisation des variables
if ($this->domain == '') $this->domain = get_class($this);
if ($this->option_ns == '') $this->option_ns = get_class($this);
// Récupération des options
$this->options = get_option($this->option_ns);
// Doit-on lancer l'installation ?
if(!isset($this->options['install']) or ($this->options['install'] != $this->version))
$this->install();
//Charger les données de localisation
load_plugin_textdomain($this->domain);
// gestion automatique des actions
foreach(get_class_methods(get_class($this)) as $methode) {
if(substr($methode, 0, 7) == 'action_') {
$this->add_action(substr($methode, 7));
}
}
}
function action_admin_menu() {
if (function_exists('add_submenu_page')) {
add_submenu_page('plugins.php',
__('{{VotrePlugin}}', $this->domain),
__('{{VotrePlugin}}', $this->domain),
3,
basename(__FILE__),
array(&$this, 'AdminHelpPage'));
}
}
function set($option, $value) {
$this->options[$option] = $value;
}
function get($option) {
if (isset($this->options[$option])) {
return $this->options[$option];
} else {
return false;
}
}
function update_options() {
return update_option($this->option_ns, $this->options);
}
//---------------------------------------------
// Editez à partir d'ici
//---------------------------------------------
function install() {
// Fonction permettant l'installation de votre plugin (création de tables, de paramètres...)
$this->set('install', $this->version);
$this->set('page', 0);
$this->update_options();
}
function AdminHelpPage() {
echo '
Page d'admin de votre plugin
';
}
function action_wp_title($titre) {
return $titre.' (on stéroïd)';
}
//---------------------------------------------
// Fin de la partie d'édition
//---------------------------------------------
}
$inst_{{VotrePlugin}} = new {{VotrePlugin}}();
Dans la partie édition, il suffit de créer de nouvelles méthodes action_“nom du hook” pour que celles-ci soient automatiquement enregistrées et exécutées par WordPress. De plus il est facile de gérer les options de votre plugin parmi les options de WordPress en utilisant les méthodes get, set et update_options
N’hésitez pas à faire vos remarques dans les commentaires.
Pour vous aider à créer vos propres plugins, n’hésitez pas à consulter :
Très bon.
[...] Pour éviter que nos fonctions entrent en collision avec celles de WordPress, celles-ci seront encapsulées dans une classe. De la même manière que je le préconise pour les plugins. [...]