Mon premier plugin wordpress.
Si vous avez balayé un peu le code de wordpress, vous avez surement vu une ligne comme la suivante :
-
<?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
Ensuite on va ajouter à l’événement register_form la fonction afficheHello
-
<?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 :
-
<?php
-
-
/*
-
Plugin Name: Mon premier pluginPlugin URI: http://www.wareteam.com
-
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.
-
Author: Yassine HANINI
-
Version: 1.0
-
Author URI: http://www.wareteam.com/
-
*/
à la suite :
-
// Cette fonction affiche deux zones de texte nom et prénom
-
function ajouterChamps() {
-
echo "<p>
-
<label>".__(‘Name:’)."<br />
-
<input type=\"text\" name=\"last_name\" id=\"last_name\" class=\"input\" value=\"".attribute_escape(stripslashes($_POST[‘last_name’]))."\" size=\"25\" tabindex=30 /></label>
-
</p>
-
<p>
-
<label>".__(‘Firstname:’)."<br />
-
<input type=\"text\" name=\"first_name\" id=\"first_name\" class=\"input\" value=\"".attribute_escape(stripslashes($_POST[‘first_name’]))."\" size=\"25\" tabindex=40 /></label>
-
</p>";
-
}
-
-
// Mise à jour de la table user_meta avec les données nom et prénom
-
// $userid est un parametre passer automatiquement à l’action de user_register
-
function sauverChamps($userid) {
-
-
// appliquer un filtre sur les champs
-
// strip_tags, trim, wp_filter_kses, wp_specialchars
-
// voir fichier wp-includes/default-filters.php ligne 19
-
-
$first_name = apply_filters(‘pre_user_first_name’, $_POST[‘first_name’]);
-
$last_name = apply_filters(‘pre_user_last_name’, $_POST[‘last_name’]);
-
-
// ajoute ou met à jour la table wp-usermeta.
-
update_usermeta( $userid, ‘last_name’, $last_name);
-
update_usermeta( $userid, ‘first_name’, $first_name);
-
}
-
-
// execute la fonction ajouterChamps à l’action :
-
// do_action(‘register_form’); se trouve sur la page wp-login.php à la ligne 268
-
add_action(‘register_form’, ‘ajouterChamps’);
-
-
// execute la fonction sauverChamps à l’action :
-
// do_action(‘user_register’, $user_id); à la page registration.php à la ligne 137 lors de l’appel de la fonction wp_insert_user
-
add_action(‘user_register’, ‘sauverChamps’);
-
-
?>
Vous pouvez consulter la liste des hooks :
http://codex.wordpress.org/Plugin_API/Action_Reference
Télécharger le plugin :
Télécharger le code source de : mon premier plugin
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.