Guardar datos personalizados para cada usuario
Permito a los usuarios guardar algunas notas en mi sitio WordPress. Solo pueden hacer esto después de iniciar sesión en el sitio.
Ahora quiero guardar sus notas en una tabla de base de datos y asociarlas con el ID del usuario, es decir, si un usuario ha guardado 2 notas, cuando inicie sesión y vaya a "mi página", debería poder ver las 2 notas que guardó.
¿Alguien puede orientarme sobre cómo hacer esto? Encontré mucha información sobre guardar metadatos personalizados del usuario cuando se registran. Pero no pude encontrar ayuda sobre guardar información asociada a una cuenta de usuario después de que hayan iniciado sesión.
Gracias.

Echa un vistazo a update_user_meta puedes guardar datos del usuario tanto si se está registrando como si ya ha iniciado sesión, solo es cuestión de qué ID de usuario le pasas.
Por ejemplo, en tu función para guardar los datos del usuario después de que haya iniciado sesión:
function save_user_data_7231(){
global $current_user;
if is_user_logged_in{ //verifica si el usuario ha iniciado sesión
if (isset($_POST['Notes'])){
// obtiene la información del usuario actual
get_currentuserinfo();
$old_notes = get_user_meta($current_user->ID, 'user_notes', true);
if (isset($old_notes)&& is_array($old_notes)){
//si ya hemos guardado más de una nota
$old_notes[] = $_POST['Notes'];
update_user_meta( $current_user->ID, 'user_notes', $old_notes);
}
if (isset($old_notes)&& !is_array($old_notes)){
//si solo habíamos guardado una nota antes
$new_notes = array($old_notes,$_POST['Notes']);
update_user_meta( $current_user->ID, 'user_notes', $new_notes)
}
if (!isset($old_notes)){
//primera nota que guardamos para este usuario
update_user_meta( $current_user->ID, 'user_notes', $_POST['Notes'])
}
}
}
}
Para mostrar las notas puedes usar get_user_meta
function get_user_notes_654(){
global $current_user;
if is_user_logged_in{ //verifica si el usuario ha iniciado sesión
// obtiene la información del usuario actual
get_currentuserinfo();
$old_notes = get_user_meta($current_user->ID, 'user_notes', true);
if (!isset($old_notes)){
$re = '¡Aún no hay notas!';
}
if (isset($old_notes)){//tenemos notas. Se eliminó el ! extra aquí.
if (is_array($old_notes)){//más de una
foreach($old_notes as $note){
$re .= '<strong>nota:</strong>' . $note . '<br />';
}
}else{//solo una
$re = '<strong>nota:</strong>' . $old_notes . '<br />';
}
}
re .='//aquí iría el formulario para añadir notas';
return $re;
}
}
Espero que esto te ayude

gracias. ¿qué pasa si quiero guardar datos que no son cadenas de texto, como archivos por ejemplo?

guardar archivos implicaría procesar la subida y guardar el ID del adjunto, que puede guardarse como una cadena de texto. también, si solo guardas la URL del archivo después de subirlo, sigue siendo una cadena de texto.

@Bainternet sé que este hilo es antiguo pero me ayuda. Solo una pregunta: no he establecido una nota y aún así $old_notes = get_user_meta($current_user->ID, 'user_notes', true);
echo 'old notes ' . isset($old_notes);
devuelve un 1, ¿esto debería ser 0/false, verdad?
