Salvataggio di dati personalizzati per ogni utente

11 feb 2011, 11:16:55
Visualizzazioni: 14.3K
Voti: 7

Permetto agli utenti di salvare alcune note sul mio sito WordPress. Possono farlo solo dopo aver effettuato l'accesso al sito.

Ora voglio salvare le loro note in una tabella del database e associarle all'ID dell'utente, cioè se un utente ha salvato 2 note, quando effettua l'accesso e va alla "mia pagina", dovrebbe poter vedere le 2 note che ha salvato.

Qualcuno potrebbe gentilmente guidarmi su come fare questo? Ho trovato molte informazioni sul salvataggio di metadati personalizzati degli utenti durante la registrazione. Ma non ho trovato alcun aiuto sul salvataggio di informazioni associate a un account utente dopo che hanno effettuato l'accesso.

Grazie.

0
Tutte le risposte alla domanda 1
4

Dai un'occhiata alla funzione update_user_meta puoi salvare i dati dell'utente durante la registrazione o dopo il login, dipende semplicemente dall'ID utente che gli passi.

Ad esempio, nella tua funzione per salvare i dati dell'utente dopo il login:

function save_user_data_7231(){
    global $current_user;
    if is_user_logged_in{ //controlla se l'utente è loggato
        if (isset($_POST['Notes'])){
            // ottieni le informazioni dell'utente corrente
            get_currentuserinfo();
            $old_notes = get_user_meta($current_user->ID, 'user_notes', true);
            if (isset($old_notes)&& is_array($old_notes)){
                //se abbiamo già salvato più di una nota
                $old_notes[] = $_POST['Notes'];
                update_user_meta( $current_user->ID, 'user_notes', $old_notes);
            }
            if (isset($old_notes)&& !is_array($old_notes)){
                //se abbiamo salvato solo una nota prima
                $new_notes = array($old_notes,$_POST['Notes']);
                update_user_meta( $current_user->ID, 'user_notes', $new_notes)
            }
            if (!isset($old_notes)){
                //prima nota che salviamo per questo utente
                update_user_meta( $current_user->ID, 'user_notes', $_POST['Notes'])
            }
        }
    } 
}

Per visualizzare le note puoi usare get_user_meta

function get_user_notes_654(){
    global $current_user;
    if is_user_logged_in{ //controlla se l'utente è loggato
        // ottieni le informazioni dell'utente corrente
        get_currentuserinfo();
        $old_notes = get_user_meta($current_user->ID, 'user_notes', true);
        if (!isset($old_notes)){
            $re = 'Nessuna nota ANCORA!';
        }
        if (isset($old_notes)){//abbiamo delle note. Rimosso il ! extra qui.
            if (is_array($old_notes)){//più di una
                foreach($old_notes as $note){
                    $re .= '<strong>nota:</strong>' . $note . '<br />'; 
                }
            }else{//solo una
                $re = '<strong>nota:</strong>' . $old_notes . '<br />';
            }
        }
        re .='//qui andrebbe il form per aggiungere note';
        return $re;
    }
}

Spero sia utile

11 feb 2011 11:55:50
Commenti

grazie. cosa succede se voglio salvare dati diversi da stringhe - ad esempio file?

lostInTransit lostInTransit
11 feb 2011 12:00:17

il salvataggio dei file comporterebbe l'elaborazione del caricamento e il salvataggio dell'ID dell'allegato che può essere salvato come stringa, inoltre se salvi semplicemente l'URL del file dopo il caricamento è comunque una stringa.

Bainternet Bainternet
11 feb 2011 12:02:52

@Bainternet so che questa discussione è vecchia ma mi è stata utile. Solo una domanda: non ho impostato una nota eppure $old_notes = get_user_meta($current_user->ID, 'user_notes', true); echo 'old notes ' . isset($old_notes); restituisce un 1, dovrebbe essere 0/false, giusto?

alex alex
10 set 2014 11:24:02

Ok ho modificato un po' il tuo codice if (!isset($old_notes[0])) { sembra funzionare come mi aspettavo. $old_notes ha sempre un array come valore?

alex alex
10 set 2014 18:36:38