get_user_meta和update_user_meta在同一页面上

时间:2016-01-10 14:02:38

标签: php wordpress forms function

我有一个小表单,用于更新我命名为" 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中运行这些函数可以正常工作。

1 个答案:

答案 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>