Итак, я следующее обновление пользовательского мета:Пользователь мета обновление не дает никакого значения
<?php if (is_user_logged_in()) { ?>
<?php echo '<input class="input" type="text" id="rhc_phone" name="rhc_phone" placeholder="Phone number" value="' .$current_user -> rh_phone. '"/>' ;?>
<?php update_user_meta($current_user->ID, 'rh_phone', esc_attr($_POST['rhc_phone'])); ?>
<?php }else{ ?>
<input class="input" type="text" id="rhc_phone" name="rhc_phone" placeholder="Phone number" value=""/>
<?php } ?>
Однако, когда я нажимаю отправить, нет никакого значения (даже не предыдущее значение).
Что я делаю неправильно?
Спасибо!
EDIT: Это моя форма, которая передается через AJAX:
<?php
$current_user = wp_get_current_user();
$rhcs_close = $_REQUEST['rhc_post_id'];//same as post id
?>
<div class="rh_contact_form">
<div class="my_textfield rhc_phone_number_class">
<?php if (is_user_logged_in()) { ?>
<?php echo '<input class="my_textfield__input" type="text" id="rhc_phone" name="rhc_phone" placeholder="Phone number" value="' .$current_user -> billing_phone. '"/>' ;?>
<?php }else{ ?>
<input class="my_textfield__input" type="text" id="rhc_phone" name="rhc_phone" placeholder="Phone number" value=""/>
<?php } ?>
</div>
<div class="my_textfield rhc_ask_class">
<?php if (is_user_logged_in()) { ?>
<?php echo '<input class="my_textfield__input" type="text" id="rhc_ask" name="rhc_ask" placeholder="Ask me" value="' .$current_user -> my_question. '"/>' ;?>
<?php }else{ ?>
<input class="my_textfield__input" type="text" id="rhc_ask" name="rhc_ask" placeholder="Ask me" value=""/>
<?php } ?>
</div>
<div class="rh_contact_button">
<button class="rh_contact_me">
<i class="icons">done</i>
</button>
</div>
</div>
<script type="text/javascript" >
function my_form_validate(element) {
$('html, body').animate({scrollTop: $(element).offset().top-100}, 150);
element.effect("highlight", { color: "#F2DEDE" }, 1500);
element.parent().effect('shake');
}
jQuery(document).ready(function($) {
$('body').on('click', '.rh_contact_me', function() {
if($('#rhc_phone').val() === '') {
my_form_validate($('#rhc_phone'));
} else if($('#rhc_ask').val() === '') {
my_form_validate($('#rhc_ask'));
} else {
var data = {
'action': 'my_send_message',
'phone': $('#rhc_phone').val(),
'to_author': $('#rhc_ask').val()
};
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
$.post(ajaxurl, data, function(response) {
if(response === 'success'){
alert('Message Sent Successfully!');
$('.rhp_close').click();
}
});
}
});
});
</script>
functions.php
class MY_Posts {
public static function my_send_message() {
if (isset($_POST['message'])) {
$to = $_POST['to_author'];
$headers = 'From: My Page <' . $_POST['email'] . '>';
$subject = "Hi";
ob_start();
?>
<div>
Hi
</div>
<?php
$message = ob_get_contents();
ob_end_clean();
$mail = wp_mail($to, $subject, $message, $headers);
if($mail){
echo 'success';
}
}
exit();
}
public static function my_mail_content_type() {
return "text/html";
}
}
Таким образом, когда пользователь вводит "номер телефона" и " ask "в форме ниже, он отправляет форму администратору (автор страницы). Но в то же время я пытаюсь сделать так, чтобы он обновлял эти два поля (которые являются мета-ключами пользователя).
Я не уверен, что лучший способ сделать это.
Я предполагаю, что два сценария: (поле «Номер телефона» в качестве примера)
Если пользователь уже имеет телефонный номер (предыдущее значение: 123-123-1234) и изменения в чем-то еще (новое значение: 986-984-2343), то оно сохранит новое значение.
Если пользователь уже имеет телефонный номер (предыдущее значение: 123-123-1234), и удаляет его (новое значение: нет), то он делает не сохранить новое значение и сохраняет старое значение).
Конечно, если пользователь не вошел в систему, то для работы с ним нет никакой ценности.
* Однако, когда я нажимаю кнопку отправки * - Можете ли вы показать нам весь код? – Script47
Конечно, одна секунда =) –
Я обновил вопрос :) –