2016-01-10 5 views
1

У меня есть небольшая форма, который обновляет пользовательские пользовательскую мету я сделал под названием «DOEL»:get_user_meta и update_user_meta на ту же странице

<?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

дает код внутри функции get_user_meta –

+0

Вы должны делать это с помощью функции в * functions.php *, во время крюка действия. – rnevius

+0

@ aref, вы можете найти здесь функцию: https://core.trac.wordpress.org/browser/tags/4.4.1/src/wp-includes/user.php#L0 это основная функция wp @ rnevius Как мне это сделать? Я не уверен, что есть крючок для любой из функций. У меня также работает аналогичная вещь, где я запускаю пользовательскую функцию для сохранения файлов с помощью wpdb, но это дает ту же проблему. – joren

ответ

0

Я действительно нашел ответ с помощью откуда-то еще.

Поскольку я запускал get_user_meta() до update_user_meta(), значения не обновлялись. После того, как я поставил update_user_meta() после того, как get_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> 
Смежные вопросы