Сохранение пользовательских данных для каждого пользователя
Я позволяю пользователям сохранять заметки на моем сайте WordPress. Они могут делать это только после входа на сайт.
Теперь я хочу сохранять их заметки в таблице базы данных и привязывать их к ID пользователя. То есть, если пользователь сохранил 2 заметки, то после входа на страницу "Моя страница" он должен видеть эти 2 сохраненные заметки.
Может ли кто-нибудь подсказать, как это реализовать? Я нашел много информации о сохранении пользовательских метаданных при регистрации, но не смог найти ничего о сохранении информации, связанной с учетной записью пользователя после его входа.
Спасибо.

Посмотрите на функцию update_user_meta. С её помощью можно сохранять данные пользователя, будь он регистрируется или уже авторизован — всё зависит от того, какой ID пользователя вы передадите.
Например, в вашей функции для сохранения данных пользователя после входа в систему:
function save_user_data_7231(){
global $current_user;
if is_user_logged_in{ //проверяем, авторизован ли пользователь
if (isset($_POST['Notes'])){
// получаем текущие данные пользователя
get_currentuserinfo();
$old_notes = get_user_meta($current_user->ID, 'user_notes', true);
if (isset($old_notes)&& is_array($old_notes)){
//если уже сохраняли несколько заметок
$old_notes[] = $_POST['Notes'];
update_user_meta( $current_user->ID, 'user_notes', $old_notes);
}
if (isset($old_notes)&& !is_array($old_notes)){
//если сохраняли только одну заметку ранее
$new_notes = array($old_notes,$_POST['Notes']);
update_user_meta( $current_user->ID, 'user_notes', $new_notes)
}
if (!isset($old_notes)){
//первая заметка для этого пользователя
update_user_meta( $current_user->ID, 'user_notes', $_POST['Notes'])
}
}
}
}
Чтобы отобразить заметки пользователя, можно использовать get_user_meta:
function get_user_notes_654(){
global $current_user;
if is_user_logged_in{ //проверяем, авторизован ли пользователь
// получаем текущие данные пользователя
get_currentuserinfo();
$old_notes = get_user_meta($current_user->ID, 'user_notes', true);
if (!isset($old_notes)){
$re = 'Заметок пока нет!';
}
if (isset($old_notes)){//есть заметки. Убрали лишний ! здесь.
if (is_array($old_notes)){//больше одной
foreach($old_notes as $note){
$re .= '<strong>заметка:</strong>' . $note . '<br />';
}
}else{//только одна
$re = '<strong>заметка:</strong>' . $old_notes . '<br />';
}
}
re .='//здесь могла бы быть форма добавления заметки';
return $re;
}
}
Надеюсь, это поможет.

спасибо. что если я хочу сохранить данные, отличные от строки - например, файлы?

сохранение файлов будет означать обработку загрузки и сохранение ID вложения, который можно сохранить как строку. также, если вы просто сохраните URL файла после загрузки, это всё равно будет строка.

@Bainternet я знаю, что эта тема старая, но она мне помогает. Просто один вопрос: я не устанавливал заметку, но $old_notes = get_user_meta($current_user->ID, 'user_notes', true);
echo 'old notes ' . isset($old_notes);
возвращает 1, а должно быть 0/false, верно?
