web-dev-qa-db-fra.com

Enregistrement de données personnalisées pour chaque utilisateur

J'autorise les utilisateurs à enregistrer des notes sur mon site wordpress. Ils ne peuvent le faire qu'après s'être connectés au site.

Maintenant, je veux enregistrer leurs notes dans une table de base de données et les associer à l'identifiant de l'utilisateur, c'est-à-dire que si un utilisateur a enregistré 2 notes, lorsqu'il se connecte et se rend sur "ma page", il devrait pouvoir voir les 2 notes qu'il a enregistrées.

Quelqu'un peut-il me guider s'il vous plaît sur la façon de faire cela? Je pourrais trouver beaucoup d'informations sur la sauvegarde des métadonnées personnalisées des utilisateurs lors de leur enregistrement. Cependant, aucune aide sur la sauvegarde des informations associées à un compte d’utilisateur n’a été trouvée après la connexion.

Je vous remercie.

4
lostInTransit

Jetez un coup d’œil à update_user_meta vous pouvez sauvegarder les données utilisateur s’ils s’enregistrent ou sont connectés, c’est une question de savoir quel ID utilisateur vous lui transmettez.

dites dans votre fonction pour sauvegarder les données de l'utilisateur une fois qu'il est connecté:

function save_user_data_7231(){
    global $current_user;
    if is_user_logged_in{ //check if user is logged in.
        if (isset($_POST['Notes'])){
            // get current user info
            get_currentuserinfo();
            $old_notes = get_user_meta($current_user->ID, 'user_notes', true);
            if (isset($old_notes)&& is_array($old_notes)){
                //if we saved already more the one notes
                $old_notes[] = $_POST['Notes'];
                update_user_meta( $current_user->ID, 'user_notes', $old_notes);
            }
            if (isset($old_notes)&& !is_array($old_notes)){
                //if we saved only one note before
                $new_notes = array($old_notes,$_POST['Notes']);
                update_user_meta( $current_user->ID, 'user_notes', $new_notes)
            }
            if (!isset($old_notes)){
                //first note we are saving fr this user
                update_user_meta( $current_user->ID, 'user_notes', $_POST['Notes'])
            }
        }
    } 
}

ils peuvent y afficher des notes que vous pouvez utiliser get_user_meta

function get_user_notes_654(){
    global $current_user;
    if is_user_logged_in{ //check if user is logged in.
        // get current user info
        get_currentuserinfo();
        $old_notes = get_user_meta($current_user->ID, 'user_notes', true);
        if (!isset($old_notes)){
            $re = 'No Notes YET!';
        }
        if (isset($old_notes)){//we have notes. Removed the extra ! here.
            if (is_array($old_notes)){//more then one
                foreach($old_notes as $note){
                    $re .= '<strong>note:</strong>' . $note . '<br />'; 
                }
            }else{//just one
                $re = '<strong>note:</strong>' . $old_notes . '<br />';
            }
        }
        re .='//add note form  would come here';
        return $re;
    }
}

J'espère que cela t'aides

7
Bainternet