It feels odd answering my own question (should this be a new question?), but after reading [this question][1] I found the following code snippet that changed the behavior: //action hook for plugins and extra fields saving do_action('edit_user_profile_update', $current_user->ID); wp_redirect( get_permalink() ); exit(); I added this after my call to `wp_update_user()` and is_user_logged_in no longer returns false. Why is this? [1]: https://wordpress.stackexchange.com/questions/9775/how-to-edit-a-user-profile-on-the-front-end/9786#9786