Créer un plugin: 2ième partie
Procédure d’activation
Si votre plugin a des commandes à exécuter qu’une seule fois, lors de son activation, vous pouvez demander leur exécution en enregistrant deux nouveaux hook (dont un pour la procédure inverse):
register_activation_hook(__FILE__, 'my_plugin_install'); register_deactivation_hook(__FILE__, 'my_plugin_uninstall');
Note: il est préférable de ne pas créer de nouvelles tables dans la base de données, ceci pour ne pas compliquer les mises à jour. On peut utiliser les options pour stocker des paramètres.
Intégrer du contenu dans une page
Dans l’article précédent nous avons vu comment un plugin pouvait interagir avec son environnement. Je rappelle: en créant une fonction qui pourra être utilisée par d’autres plugins, en modifiant le comportement de wordpress par le biais des filtres et des actions, en rajoutant un widget à l’interface.
Voici maintenant un exemple d’injection de contenu, par le plugin, dans le corps de l’article ou de la page. Pour ce faire, il faut enregistrer un nouveau filtre:
add_filter( 'the_content', 'my_content_filter' );
Puis écrire cette fonction, qui prend obligatoirement une variable $content en paramètre et qui la retourne. Voici un exemple qui recherche une chaîne inscrite par le rédacteur dans une page :
function my_content_filter($content) { // change $content if ( is_page() && strpos($content, '<!-- my replacement point -->') !== false ) { $content = str_replace('<!-- my replacement point -->', 'bla bla ...', $content); } return $content; }
Une page d’administration: d’abord les menus
Voyons maintenant comment créer une page d’administration.
Tout d’abord, il faut créer une nouvelle entrée dans le menu de wordpress, généralement dans « Réglages », si une page vous suffit. La méthode est expliquée ici http://codex.wordpress.org/Adding_Administration_Menus, voici la portion de code qui nous intéresse:
// nouvelle action add_action('admin_menu', 'my_plugin_menu'); // votre fonction qui va rajouter le ou les menus d'administration de votre plugin function my_plugin_menu() { // cette fonction rajoute une entrée dans le menu "Réglages" add_options_page('My Plugin Options', 'My Plugin', 8, __FILE__, 'my_plugin_options'); // pour voir les niveaux des users: http://codex.wordpress.org/User_Levels } // votre fonction qui sera appelée lorsque l'administrateur cliquera sur votre lien d'admin function my_plugin_options() { echo "le formulaire d'administration..."; }
Une page d’administration: version simplifiée
Dans l’article précédent, je parlais des options, qui servent par exemple à enregistrer la configuration du plugin. L’idée est de permettre à l’admin du blog de changer ces options via un formulaire. Et bien wordpress fournit une méthode pour générer ces formulaires très rapidement, et il se charge lui même de mettre à jour les options.
Le code se trouve sur la page http://codex.wordpress.org/Creating_Options_Pages. Pour que ça marche, il faut vraiment respecter le code fourni à la fin, à savoir l’action du formulaire et les différents champs cachés.
J’en profite pour vous signaler un détail amusant: en mettant dans votre navigateur la terminaison /wp-admin/options.php vous verrez une page qui liste toutes les options de wordpress!
Une page d’administration personnalisée
Si la version simplifiée ne vous suffit pas, sachez que vous êtes libre de créer le formulaire que vous voulez, et vous devrez récupérer par vous même les valeurs postées, faire les tests, mettre à jour les options etc. Vous avez un exemple complet sur http://codex.wordpress.org/Adding_Administration_Menus.
Parmi les subtilités, vous noterez que le formulaire est posté en POST à l’action $_SERVER['REQUEST_URI'] et qu’ils conseillent de poster en même temps un champ caché qui servira de test pour faire la récupération des données via le tableau $_POST.
A suivre
Prochaine étape: distribution et promotion du plugin
Suggestions de lecture
- Créer un plugin (0.780)
- Publier un plugin chez WordPress (0.720)
- Comparer des fichiers (0.560)
Partagez avec les autres
Ça vous a plu?
Ne partez pas sans laisser votre appréciation!
English
(8 votes)










Merci pour le tuto, je suis en train de faire mes propres plugins et ça m’éclaire pas mal
Like or Dislike:
0
0
Bon tuto merci ca m’aide
bonne continuation
Like or Dislike:
0
0