Обновить мета пользователя с помощью ajax в wordpress - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь обновить метаданные пользователя с помощью 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 (), но результат получился .... Спасибо за помощь!

...