Ajouter des champs aux formulaires WordPress

Pour un projet de site e-commerce (avec espace membre pour les particuliers et les professionnels), j’avais besoin de savoir si l’utilisateur était professionnel ou particulier.

1- Page Mon compte – Formulaire d’inscription

Au moment de l’inscription, je demande à l’utilisateur si il était professionnel ou particulier.

function register_profile_select_field() {
    ?>
  <p class="form-row form-row-wide">
    <label for="user_profiles"><?php _e( 'You are: ', 'Internationalization_OceanWP-child' ); ?>  <span class="required">*</span></label>

    <select name="user_profiles" id="user_profiles">

    <option value="Professional"><?php _e( 'Professional', 'Internationalization_OceanWP-child' ); ?></option>
    <option value="Individual"><?php _e( 'Individual', 'Internationalization_OceanWP-child' ); ?></option>

    </select>

    </p>
<?php

add_action( 'woocommerce_register_form_start', 'register_profile_select_field' );

Une fois le formulaire validé, il faut enregistrer la valeur du nouveau champ

add_action( 'woocommerce_created_customer', 'save_register_profile_select_field' );
   
function save_register_profile_select_field( $customer_id ) {
   if ( isset( $_POST['user_profiles'] ) ) {
      update_user_meta( $customer_id, 'user_profiles', $_POST['user_profiles'] );
   }
}

2- Enregistrer le profil de l’utilisateur sur son compte et sur de l’admin de WordPress

Voici la fonction qui va permettre d’afficher le nouveau champ :

function show_register_profil_select_field($user){   
  if (empty ($user) ) {
  $user_id = get_current_user_id();
  $user = get_userdata( $user_id );
  }
?>    
   <p class="form-row form-row-wide">
      <label for=""><?php _e('Profile', 'Internationalization_OceanWP-child' ); ?>  
      <span class="required">*</span></label>
         <select name="user_profiles" id="user_profiles">
             <option selected disabled hidden><?php _e($user->user_profiles, 'Internationalization_OceanWP-child' ); ?></option>
    <option value="Professional"><?php _e( 'Professional', 'Internationalization_OceanWP-child' ); ?></option>
    <option value="Individual"><?php _e( 'Individual', 'Internationalization_OceanWP-child' ); ?></option>
       </select>
  </p>
<?php

}

Page Mon compte – Détails du compte (front-end)

Afficher le nouveau champ dans les détails du compte de l’utilisateur:

add_action( 'woocommerce_edit_account_form', 'show_register_profil_select_field', 30 );

Page utilisateur – Votre profil

Afficher le nouveau champ sur la page utilisateur:

add_action( 'show_user_profile', 'show_register_profil_select_field', 30 );
add_action( 'edit_user_profile', 'show_register_profil_select_field', 30 ); 

A propos d'Alexis

Dans le web depuis plus 5 ans, je me suis d'abord spécialisé en webmarketing pour ensuite m'investir dans la création de sites web vitrine, sites/boutiques e-commerce et applications web/plateforme web. J'ai ainsi la double compétence qui me permet d'être force de proposition pour la création de votre site marchand et la mise en place de votre stratégie de vente en ligne.

Laisser un commentaire