我有一个小表单,用于更新我命名为" Doel"的自定义用户元:
<?php $user_ID = get_current_user_id(); $user_data = get_user_meta($user_ID); ?>
<form method="POST" action="" id="doel_edit">
<input type="text" value="<?php if(isset($user_data['doel'][0])): echo $user_data['doel'][0]; endif; ?>" name="doel">
<button value="done" type="submit" form="doel_edit">Opslaan</button>
</form>
当我提交表单时,我得到标准的update_user_meta()函数来运行
<?php if(isset($_POST['doel'])) {
update_user_meta($user_ID, 'doel', $_POST['doel']);
} ?>
不,这一切都运行正常,但是在提交表单后加载页面时,它会回显update_user_meta()之前的旧值。我必须手动重新加载页面才能获得新的价值。
为什么不直接更新值?我该如何解决这个问题?
我认为在wp-admin中运行这些函数可以正常工作。
答案 0 :(得分:0)
我实际上是在其他地方的帮助下找到了答案。
因为我在update_user_meta()之前运行了get_user_meta(),所以值没有更新。一旦我在get_user_meta()之后放置了update_user_meta()就可以了:
<?php $user_ID = get_current_user_id(); ?>
<?php if(isset($_POST['doel'])) {
update_user_meta($user_ID, 'doel', $_POST['doel']);
} ?>
<?php $user_data = get_user_meta($user_ID); ?>
<form method="POST" action="" id="doel_edit">
<input type="text" value="<?php if(isset($user_data['doel'][0])): echo $user_data['doel'][0]; endif; ?>" name="doel">
<button value="done" type="submit" form="doel_edit">Opslaan</button
</form>