Mon premier plugin wordpress.

Si vous avez balayé un peu le code de wordpress, vous avez surement vu une ligne comme la suivante :

  1. <?php do_action(‘login_form’); ?>

Vous vous demandez à quoi ca sert ?

Cette ligne va exécuter les fonctions ajoutées à l’action login_form.

Grâce à la fonction add_action, on peut exécuter des fonctions dans des endroits du code.

Un exemple simple pour afficher le mot « hello » à la place de
do_action(‘register_form’); qui se trouve sur la page wp-login.php à la ligne 268

On déclare notre fonction afficheHello

  1. function afficheHello() {echo "Hello";}

Ensuite on va ajouter à l’événement register_form la fonction afficheHello

  1. <?php add_action(‘register_form’, ‘afficheHello’);?>

Notre fonction afficheHello sera exécutée à la page wp-login.php à la ligne 268.

Grâce à ce mécanisme, on peut ajouter des fonctions externes au noyau de wordpress en utilisant des plugins.Pourquoi ne pas modifier formulaire de login directement ?

Une manipulation dans le code directement, vous empêchera de mettre à jour wordpress ultérieurement.

Le plugin suivant va nous permettre d’ajouter deux champs supplémentaires (Le nom et le prénom) au formulaire d’enregistrement d’un nouveau membre sans toucher au code wordpress.

Pour tester il suffit d’enregistrer le fichier suivant dans le répertoire wp-content/plugins/ ensuite de l’activer dans la page plugins dans l’interface admin.

Le commentaire au début du fichier est nécessaire pour afficher les informations dans la page des plugins :

  1. <?php
  2.  
  3. /*
  4. Plugin Name: Mon premier pluginPlugin URI: http://www.wareteam.com
  5. Description: C’est un plugin qui permet d’ajouter un champ nom et un champ prenom a la page inscription. Ce plugin a pour but de vous apprendre le mecanisme des plugins.
  6. Author: Yassine HANINI
  7. Version: 1.0
  8. Author URI: http://www.wareteam.com/
  9. */

à la suite :

  1. // Cette fonction affiche deux zones de texte nom et prénom
  2. function ajouterChamps() {
  3. echo "<p>
  4. <label>".__(‘Name:’)."<br />
  5. <input type=\"text\" name=\"last_name\" id=\"last_name\" class=\"input\" value=\"".attribute_escape(stripslashes($_POST[‘last_name’]))."\" size=\"25\" tabindex=30 /></label>
  6. </p>
  7. <p>
  8. <label>".__(‘Firstname:’)."<br />
  9. <input type=\"text\" name=\"first_name\" id=\"first_name\" class=\"input\" value=\"".attribute_escape(stripslashes($_POST[‘first_name’]))."\" size=\"25\" tabindex=40 /></label>
  10. </p>";
  11. }
  12.  
  13. // Mise à jour de la table user_meta avec les données nom et prénom
  14. // $userid est un parametre passer automatiquement à l’action de user_register
  15. function sauverChamps($userid) {
  16.  
  17. // appliquer un filtre sur les champs
  18. // strip_tags, trim, wp_filter_kses, wp_specialchars
  19. // voir fichier wp-includes/default-filters.php ligne 19
  20.  
  21. $first_name = apply_filters(‘pre_user_first_name’, $_POST[‘first_name’]);
  22. $last_name = apply_filters(‘pre_user_last_name’, $_POST[‘last_name’]);
  23.  
  24. // ajoute ou met à jour la table wp-usermeta.
  25. update_usermeta( $userid, ‘last_name’, $last_name);
  26. update_usermeta( $userid, ‘first_name’, $first_name);
  27. }
  28.  
  29. // execute la fonction ajouterChamps à l’action :
  30. // do_action(‘register_form’); se trouve sur la page wp-login.php à la ligne 268
  31. add_action(‘register_form’, ‘ajouterChamps’);
  32.  
  33. // execute la fonction sauverChamps à l’action :
  34. // do_action(‘user_register’, $user_id);   à la page registration.php à la ligne 137 lors de l’appel de la fonction wp_insert_user
  35. add_action(‘user_register’, ‘sauverChamps’);
  36.  
  37. ?>

Vous pouvez consulter la liste des hooks :

http://codex.wordpress.org/Plugin_API/Action_Reference

WP Hooks List


Télécharger le plugin :

Télécharger le code source de : mon premier plugin


One Response to Mon premier plugin wordpress.

  1. romain dit :

    Bonjour
    Bonjour, je voudrais ajouter une meta-value à post quand une personne enregistrée entre dans la page ‘write a new post’.

    J’ai essayé d’ajouter cette ligne dans le fichier wp-admin/post-new.php
    add_post_meta($post_id,’Destiscrib’,$autoscrib);
    mais le problème est que $post_id==0 puisqu’il n’a pas encore sa propre id (puisque pas encore dans la base de données)

    J’ai essayé
    add_action(‘publish_post’, ‘ajouter_destiscrib’);
    mais add_action semble ne pas marcher dans ce fichier

    J’ai essayé:
    do_action(…) et j’ai mis l’action dans un autre fichier, mais dans ce cas, comment récupérer ma variable $autoscrib qui est dans le 1er fichier (wp-admin/post-new.php). Et puis cette méthode me semble bien lourde pour une petite modification.

    Pourriez-vous m’aider ?

    Romain.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>