Supporto » Funzionalità = Plugin » Campi personalizzati nel profilo
Campi personalizzati nel profilo
-
Buona sera ragazzi, avendo la necessità di inserire dei nuovi campi utente e una nuova sezione che li contenga ho inserito il seguente codice in functions.php
Il problema è che quando inserisco i dati nei campi non me li memorizza, inoltre vorrei implementare uno dei campi nel form di registrazione woocommerce, qualche idea? Grazie!
-
Questo topic è stato modificato 7 anni fa da
Cristiano Zanca.
-
Questo topic è stato modificato 7 anni fa da
-
Ciao @coach24,
WordPress non salva tutti i dati che tu inserisci all’interno della pagina, devi agganciarti ad altre due hooks: personal_options_update e edit_user_profile_update.
Il primo per Profile page il secondo quando editi un’altro utente.
Per aggiungere ulteriori campi alla registrazione di WooCommerce puoi seguire questo articolo.
Di base, ti agganci a woocommerce_register_form_start per mostrare i fields aggiuntivi e per salvarli invece a woocommerce_created_customer. L’articolo aggiunge anche una funzione per la sanitizzazione dei dati e poter mostrare un testo custom in caso di validazione errata.
Ciao @wido grazie per la dritta, per quanto riguarda il salvare i dati ho risolto così:
/** * Show custom user profile fields * @param obj $user The user object. * @return void */ function my_custom_user_profile_fields($user) { ?> <h2><?php _e( 'Membership Info' ); ?></h2> <table class="form-table"> <tr> <th> <label for="Your_Coach_Herbalife"><?php _e('Personal Coach del Benessere Herbalife', 'my'); ?></label> </th> <td> <input type="text" name="your_coach" id="your_coach" value="<?php echo esc_attr( get_the_author_meta( 'your_coach', $user->ID ) ); ?>" class="regular-text" /> <br><span class="description"><?php _e('Come Cliente inserisci Nome e Cognome del tuo Coach del Benessere di riferimento su Nutrition for Life Wellness POINT.', 'my'); ?></span> <br><span class="description"><?php _e('Se non ne hai uno lascia in bianco.', 'my'); ?></span> </td> </tr> <tr> <th> <label for="Your_Role"><?php _e('Ruolo', 'my'); ?></label> </th> <td> <input type="text" name="your_role" id="your_role" value="<?php echo esc_attr( get_the_author_meta( 'your_role', $user->ID ) ); ?>" class="regular-text" /> <br><span class="description"><?php _e('Come Membro inserisci il tuo ruolo su Nutrition for Life Wellness POINT.', 'my'); ?></span> <br><span class="description"><?php _e('Predefinito: Personal Coach del Benessere.', 'my'); ?></span> </td> </tr> <tr> <th> <label for="Your_Info"><?php _e('Informazioni', 'my'); ?></label> </th> <td> <input type="text" name="your_info" id="your_info" value="<?php echo esc_attr( get_the_author_meta( 'your_info', $user->ID ) ); ?>" class="regular-text" /> <br><span class="description"><?php _e('Come Membro inserisci una breve descrizione di ciò che fai.', 'my'); ?></span> <br><span class="description"><?php _e('Es: Aiuto le persone a stare meglio.', 'my'); ?></span> </td> </tr> <tr> <th> <label for="Your_ID_Herbalife"><?php _e('ID Membro Herbalife', 'my'); ?></label> </th> <td> <input type="text" name="your_member_id" id="your_member_id" value="<?php echo esc_attr( get_the_author_meta( 'your_member_id', $user->ID ) ); ?>" class="regular-text" /> <br><span class="description"><?php _e('Come Membro Herbalife facente parte del nostro Team inserisci la tua ID Herbalife.', 'my'); ?></span> <br><span class="description"><?php _e('Se fai parte di un\'altra organizzazione non registrarti a questo sito.', 'my'); ?></span> </td> </tr> <tr> <th> <label for="Your_Sponsor_Herbalife"><?php _e('Sponsor Herbalife', 'my'); ?></label> </th> <td> <input type="text" name="your_sponsor" id="your_sponsor" value="<?php echo esc_attr( get_the_author_meta( 'your_sponsor', $user->ID ) ); ?>" class="regular-text" /> <br><span class="description"><?php _e('Come Membro Herbalife Inserisci Nome e Cognome del tuo Sponsor.', 'my'); ?></span> </td> </tr> </table> <?php } add_action('show_user_profile', 'my_custom_user_profile_fields'); add_action('edit_user_profile', 'my_custom_user_profile_fields'); /** * User profile custom fields SAVE */ add_action( 'personal_options_update', 'save_extra_data_user_fields' ); add_action( 'edit_user_profile_update', 'save_extra_data_user_fields' ); function save_extra_data_user_fields( $user_id ) { update_user_meta( $user_id,'your_coach', sanitize_text_field( $_POST['your_coach'] ) ); update_user_meta( $user_id,'your_role', sanitize_text_field( $_POST['your_role'] ) ); update_user_meta( $user_id,'your_info', sanitize_text_field( $_POST['your_info'] ) ); update_user_meta( $user_id,'your_member_id', sanitize_text_field( $_POST['your_member_id'] ) ); update_user_meta( $user_id,'your_sponsor', sanitize_text_field( $_POST['your_sponsor'] ) ); }
Per inserire il campo su woocommerce ancora nulla, essendo un autodidatta avrei bisogno di maggiori info. Grazie!
@coach24, potresti in caso postare le porzioni di codice su pastebin prox volta? Se sono cose brevi non creano problemi, questi però risultano difficili da leggere.
Per WooCommerce ti ho inserito il link alla guida nella precedente risposta https://goo.gl/wtGVzN. Se hai problemi chiedi pure.
Grazie @wido ho risolto il problema, adesso ho un’altra esigenza ho creato un profilo utente visibile al pubblico e nel quale voglio visualizzare alcune info dei campi personalizzati ho provato ma non riesco a trovare il codice giusto, soluzioni possibili?
Felice che tu abbia risolto @coach24.
Per il front-end se necessiti di prelevare i dati dell’utente corrente ti basta effettuare una chiamata a wp_get_current_user() che ti ritorna tutti i dati relativi all’utente corrente. Campi addizionali che non esistono li prelevi con get_user_meta().
Se invece vuoi prelevare un utente specifico puoi avvalerti di get_user_by() che ti permette di creare un utente se non conosci l’id ma altri dati.
-
Questa risposta è stata modificata 7 anni fa da
Guido Scialfa.
In pratica questo fa vedere il dato dell’utente a tutti.
<?php echo $user->display_name; ?>
ma non riesco a farlo funzionare con i campi personalizzatiRisolto, caso chiuso! Grazie ancora!
<?php echo get_user_meta($user->ID, 'your_info', true); ?>
-
Questa risposta è stata modificata 7 anni fa da
- Il topic ‘Campi personalizzati nel profilo’ è chiuso a nuove risposte.