Я пытаюсь обновить метаданные пользователя с помощью ajax в wordpress, но у меня есть некоторые проблемы ..
html:
<<div class="profil-container">
<div class="profil-countainer-inner">
<form id="profileupload" class="profil-data-container ajax-account" action="accountChange" method="post">
<?php wp_nonce_field('ajax-update-profil', 'securityProfil'); ?>
<p class="status"></p>
<input id="profile-name" value="">
<label id="profile-name-label" >forname</label>
<input id="profile-lastname" value="">
<label id="profile-lastname-label" >lastname</label>
<input id="profile-email" value="">
<label id="profile-email-label" >E-Mail</label>
<input id="profile-address" value="">
<label id="profile-address-label" >address</label>
<input id="profile-city" value="">
<label id="profile-city-label" >city</label>
<input id="profile-zip" value="">
<label id="profile-zip-label" >zip</label>
<input type="submit" class="save-profil-changes" value="save changes">
</form>
</div>
</div>
js - файл:
$(document).ready(function () {
$('form#profileupload').on('submit', function(event){
console.log("test");
event.preventDefault();
$('p.status', this).show().text(profil_data_object.loadingmessage);
action ='uploadprofildata';
forname = $('form#profileupload #profile-name').val();
lastname = $('form#profileupload #profile-lastname').val();
email = $('form#profileupload #profile-email').val();
address = $('form#profileupload #profile-address').val();
city = $('form#profileupload #profile-city').val();
zip = $('form#profileupload #zip-city').val();
security = $('form#profileupload #securityProfil').val();
ctrl = $(this);
$.ajax({
type: 'POST',
dataType: 'json',
url: profil_data_object.ajaxurl,
data: {
'action': action,
'forname': forname,
'lastname': lastname,
'email': email,
'address': address,
'zip': zip,
'security': security
},
complete: function() {
console.log("complete");
},
success: function(data){
$('p.status',ctrl).text(data.message);
}
});
return false;
});
});
функция. php файл
function ajax_account(){
wp_enqueue_script('account-ajax', get_stylesheet_directory_uri() . '/js/account-ajax.js',"","",true);
wp_enqueue_script('account-ajax');
wp_localize_script( 'account-ajax', 'profil_data_object', array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),'',
'loadingmessage' => __('Sending user info, please wait...')
));
}
add_action('wp_enqueue_scripts','ajax_account');
и
add_action('wp_ajax_uploadprofildata', 'ajax_profile_upload');
function ajax_profile_upload() {
check_ajax_referer( 'ajax-update-profil', 'securityProfil' );
$user_id = get_current_user_id();
$username = sanitize_text_field($_POST['forname']); ;
$userlastname = sanitize_text_field($_POST['lastname']);
$useremail = sanitize_text_field( $_POST['email']);
$useraddress = sanitize_text_field( $_POST['address']);
$usercity = sanitize_text_field( $_POST['city']);
$userzip = sanitize_text_field( $_POST['zip']);
$user_data = wp_update_user( array(
'firstname' => $username,
'lastname' => $userlastname,
'user_email' => $useremail,
'billing_first_name' => $username,
'billing_last_name' => $lastname,
'billing_address_1' => $useraddress,
'billing_city' => $usercity,
'billing-postcode' => $userzip,
) );
if ( is_wp_error( $user_data ) ) {
echo json_encode(array('message'=>__('Something went wrong')));
} else {
echo json_encode(array('message'=>__('Profile updated')));
}
die();
}
Я всегда получаю сообщение «Что-то пошло не так», значит, процесс работает. Я думаю, что тут что-то не так с функцией wp_update_user. В любом случае, я тоже попробовал update_user_meta (), но результат получился .... Спасибо за помощь!