Пользовательское поле пользователя с помощью флажка

Я создал интерфейс для просмотра и редактирования профиля. Теперь у меня есть ящик с ajax-контролем, чтобы подтвердить, подписан ли пользователь на бюллетени или нет. Настройка отлично работает на панели инструментов WordPress и в зависимости от того, какой пользователь выбрал, она также отображается в интерфейсе. Тем не менее, настройки не сохраняются с интерфейсом, даже если он возвращает успех.

Вот что выглядит function.php ..

// Newsletter custom field add_action('show_user_profile', 'sdvr_user_profile_edit_action'); add_action('edit_user_profile', 'sdvr_user_profile_edit_action'); function sdvr_user_profile_edit_action($user) { $checked = (isset($user->newsletter_status) && $user->newsletter_status) ? ' checked="checked"' : ''; ?> <h3>Newsletter</h3> <label for="newsletter_status"> <input name="newsletter_status" type="checkbox" id="newsletter_status" <?php echo $checked; ?>> <span>Receive newsletters</span> </label> <?php } add_action('personal_options_update', 'sdvr_user_profile_update_action'); add_action('edit_user_profile_update', 'sdvr_user_profile_update_action'); function sdvr_user_profile_update_action($user_id) { update_user_meta($user_id, 'newsletter_status', isset($_POST['newsletter_status']) ? 1 : 0); } // Ajax call for newsletter add_action( 'wp_ajax_sdvr_action', 'sdvr_user_profile_update_action' ); add_action( 'wp_ajax_nopriv_sdvr_action', 'sdvr_user_profile_update_action' ); 

И это интерфейсный код.

 <?php $checked = (get_user_meta($current_user->ID, 'newsletter_status', true)) ? ' checked="checked"' : ''; ?> <form class="newsletter"> <span> <input type="checkbox" id="newsletter_status" name="newsletter_status" <?php echo $checked; ?>> <label for="newsletter_status">Subscribe to our newsletter</label> </span> </form> <script type="text/javascript"> jQuery(function($) { var $form = $('form.newsletter'), $checkbox = $form.find('input[type=checkbox]'); $checkbox.on('change', function() { $form.submit(); }) $form.on('submit', function() { var $data = $(this).serialize(); $.ajax({ url : '<?php echo home_url() ?>' + '/wp-admin/admin-ajax.php', type : 'POST', data : $data + '&action=sdvr_user_profile_update_action', beforeSend: function() { console.log('Updating..'); }, success : function( response ) { console.log('Success'); }, complete: function() { console.log( "Field updated"); }, error: function(err) { console.log(err); } }); return false; }); }); </script>