I've made a form on WordPress theme frontend that let registered user change some of their user metadata on page, but it didn't work, code like below:
<form name="update_basic_user_meta" id="update_basic_user_meta" action="<?php echo esc_url( home_url() ); ?>?update_basic_user_meta=true" method="POST">
<select name="gender">
<option value="male" ><?php _e('Male','text-domain');?></option>
<option value="female" ><?php _e('Female','text-domain');?></option>
</select>
<div>
<label><input type="radio" name="specialty" value="0"> <?php _e('Read','text-domain');?></label><br>
<label><input type="radio" name="specialty" value="1"> <?php _e('Write','text-domain');?></label><br>
<label><input type="radio" name="specialty" value="2"> <?php _e('Translate','text-domain');?></label>
</div>
<button name="submit" type="submit"><?php _e('Submit','text-domain');?></button>
<input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" />
</form>
<?php
function update_basic_user_meta() {
$user_id = current_user_id();
update_user_meta( $user_id, 'gender', $_POST['gender'] );
update_user_meta( $user_id, 'specialty', $_POST['specialty'] );
}
add_filter('init', 'update_basic_user_meta');
?>
The "Gender" "Specialty" user metadata field is existed and work well on backend user profile page.
Don't have a clue how this form didn’t affect any of the user metadata.
Please help :) Thank you all.
current_user_id
, so that should beget_current_user_id
. – Sally CJ Oct 12 '20 at 3:29