Supporto » Funzionalità = Plugin » Campi personalizzati nel profilo

  • Risolto Cristian Mulino

    (@coach24)


    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

    http://codepad.org/7gXaXAME

    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!

Stai visualizzando 7 risposte - dal 1 al 7 (di 7 totali)
  • Moderatore Guido Scialfa

    (@wido)

    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.

    Chi ha creato la discussione Cristian Mulino

    (@coach24)

    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!

    Moderatore Guido Scialfa

    (@wido)

    @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.

    Chi ha creato la discussione Cristian Mulino

    (@coach24)

    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?

    Moderatore Guido Scialfa

    (@wido)

    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 6 anni fa da Guido Scialfa.
    Chi ha creato la discussione Cristian Mulino

    (@coach24)

    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 personalizzati

    Chi ha creato la discussione Cristian Mulino

    (@coach24)

    Risolto, caso chiuso! Grazie ancora!

    <?php echo get_user_meta($user->ID, 'your_info', true); ?>

Stai visualizzando 7 risposte - dal 1 al 7 (di 7 totali)
  • Il topic ‘Campi personalizzati nel profilo’ è chiuso a nuove risposte.