[AUTOMATIQUE] Cet article a plus de 5 ans.
Il se peut donc que les informations qu'il fournit ne soient plus totalement exactes.

Si vous avez la version gratuite de Events Manager qui est disponible sur WordPress.org, vous n’avez la possibilité d’ajouter des champs additionnels au formulaire d’inscription depuis l’administration. Cette fonctionnalité n’est disponible que pour version PRO du plugin, mais vous pouvez assez facilement ajouter des champs avec quelques hooks ! Vous devez les coller dans le fichiers functions.php de votre thème.

Pour ce faire, nous avons de 4 hooks ; 2 actions et 2 filtres.

Les fonctions

  • Première action hook le template de formulaire pour ajouter le champ additionnel. Dans cet exemple, ce champ sera le nom de la société.
  • Le second hook est un filtre qui permet d’enregistrer la valeur du champ dans la base de données.
  • Le troisième ajoute le nouveau champ à la liste des champs disponibles dans l’admin (lorsque vous choisissez les champs à afficher dans le tableau de listing).
  • Et le dernier filtre ajoute le champ à la table quand il est activé dans la vue (ce hook est également utilisé lorsque vous exportez des données).
function bweb_add_custom_event_fields(){
	?>
		<p>
			<label for='user_company'><?php esc_html_e('Société', 'textdomain'); ?></label>
			<input type="text" name="user_company" id="user-company"  class="input" value="<?php if(!empty($_REQUEST['user_company'])) echo esc_attr($_REQUEST['user_company']); ?>" />
		</p>

	<?php
}
add_action('em_register_form','bweb_add_custom_event_fields');


function  bweb_save_custom_event_fields (){
	global $EM_Booking ;
	if( ! empty( $_REQUEST['user_company'] ) ){
			$EM_Booking->booking_meta['registration']['user_company'] = wp_kses( $_REQUEST['user_company'], array() );
	}
}
add_filter('em_booking_add','bweb_save_custom_event_fields');	


function bweb_table_custom_event_fields($template, $EM_Bookings_Table){
        $template['user_company'] = __('Société', 'textdomain');
        return $template;
}
add_action('em_bookings_table_cols_template', 'bweb_table_custom_event_fields',10,2);
 
 
function bweb_display_col_custom_event_fields($val, $col, $EM_Booking, $EM_Bookings_Table, $csv){
        if( $col == 'user_company' ){
                $val = $EM_Booking->get_person()->user_company;               
        }
        return $val;
}
add_filter('em_bookings_table_rows_col','bweb_display_col_custom_event_fields', 10, 5);

 

Comme toujours, vous n’avez qu’à coller ces fonctions dans votre fichier de thème dédié, puis à modifier la chaîne user_company par ce que vous voulez.

event-manager-parameters
Après avoir tout enregistré, vous devez vous rendre dans Event Manager et cliquer sur le petit engrenage pour ouvrir la popup de paramétrage des champs. Vous devez ensuite faire un Drag & Drop du nouveau champ vers la gauche pour l’activer sur la vue tableau et/ou dans l’export CSV.

Et voilà, c’est terminé!

 

Article rédigé parBrice CAPOBIANCO

Autodidacte passionné par WordPress. J'aime apprendre et créer pour ensuite partager !

Coorganisateur des Meetups WordPress Rennes et fondateur de bweb.
Partager cet article

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

Afficher les 13 commentaires

13 commentaires

  1. Bonjour, Merci pour le tuto!
    Est ce que l’on peut dédoubler la page events en anglais/français s’il vous plait?
    J’ai ajouté un tag evenement pour distancier les evnts en FR et en GB, mais je vois pas comment insérer cette étiquette dans la partie de « event manager »
    Réglages/Mise en forme/ Etiquettes d’évènements/
    Merci!!

  2. Bonjour Brice,
    Merci pour ce tuto très bien fait !
    Ma problématique est la suivante : je souhaiterai rajouter des champs personnalisés relatifs à trois données de contact renseignées par les utilisateurs lors de leur inscription sur le site (gestion utilisateur avec le plugin Ultimate Member).
    Je suppose qu’il est possible d’utiliser les Hooks pour interroger les infos’, néanmoins les codes changent en conséquence je suppose ?
    Merci par avance de ton aide.
    Phibz

  3. Bonjour,

    Je souhaite supprimer les champs Téléphone et commentaire dans mon formulaire de réservation de Events manager standard. Quelqu’un pourrait il m’aider pour qu’il ne me reste plus que Nom Email et le bouton réservé. Merci de votre aide. Eric

  4. Merci.;)
    Et à tout hasard, pouvez vous me dire comment on supprime le textarea de commentaire ?
    J’aimerais autant que les gens commentent dans les commentaires de l’événement plutôt que dans celui du formulaire de réservation.

    • Bonjour,
      Tu dois coller les fonctions ci-dessus dans le fichier functions.php de ton thème (le plus simple). Si le champ que tu veux ajoutez ne concerne pas « le nom de l’entreprise », mais autre chose, tu dois simplement modifier « Société » et « user_company » par ce que tu veux.
      Ex: « Nom de l’association » et « nom_asso ».

  5. Bonjour et merci beaucoup pour ce tuto et code qui m’a sauvé !!! 🙂

    Par contre moi j’ai 2 champs à ajouter et quand je copie une 2ème fois votre code dans mon fichier ça ne fonctionne pas.
    Je me doute qu’il y a des paramètres à changer pour en insérer un 2ème mais je ne vois pas lequel. Si vous pouvez m’aider….

    Merci beaucoup.

  6. Bonjour,

    J’ai essayé de me servir de ce code mais cela ne fonctionne pas…
    Lorsque j’essaye de le mettre dans mon fichier de fonction de mon thème le site ne fonctionne plus.

    Merci à vous,