I liked to customize my profile page by adding new fields to get more info from the user like “Gender” or “Speaking Languages”. I managed to get the text input form to work, the problem I having now is on the radio and checkbox type of input.
Here is my code:
function my_user_field( $user ) {
?>
<h3><?php _e('More About You'); ?></h3>
<table class="form-table">
<tr>
<th>
<label for="Dealing Type"><?php _e('Gender'); ?>
</label></th>
<td><span class="description"><?php _e('Gender?'); ?></span><br>
<label><input type="radio" name="dealing" value="Male">Male<br /></label>
<label><input type="radio" name="dealing" value="Female">Female<br /></label>
</td>
</tr>
<tr>
<th>
<label for="company"><?php _e('Company'); ?>
</label></th>
<td>
<span class="description"><?php _e('Insert Your Company name'); ?></span><br>
<input type="text" name="company" id="company" value="<?php echo esc_attr( get_the_author_meta( 'company', $user->ID ) ); ?>" class="regular-text" /><br />
</td>
</tr>
<tr>
<th>
<label for="language"><?php _e('Language'); ?>
</label></th>
<td><input type="checkbox" name="Engilsh" value="Malay" /> English<br />
<input type="checkbox" name="language" value="Mandarin" /> Mandarin<br />
</td>
</tr>
</table>
<?php }
function my_save_custom_user_profile_fields( $user_id ) {
if ( !current_user_can( 'edit_user', $user_id ) )
return FALSE;
update_usermeta( $user_id, 'gender', $_POST['gender'] );
update_usermeta( $user_id, 'company', $_POST['company'] );
update_usermeta( $user_id, 'language', $_POST['language'] );
}
add_action( 'show_user_profile', 'my_user_field' );
add_action( 'edit_user_profile', 'my_user_field' );
add_action( 'personal_options_update', 'my_save_custom_user_profile_fields' );
add_action( 'edit_user_profile_update', 'my_save_custom_user_profile_fields' );
The “Gender” and “Languages” are not passing through the $_post[]. I am new to coding, hope you guys can help.
You are missing the “checked” value for the inputs
Also, the usermeta is dealing but your are checking for
$_POST['gender']
Finally, you should have one usermeta for English and other for Mandarin, as they are not mutually exlcusive
[edit: working code]
[edit2: multiple languages]