5

I want to add some more profile fields to Wordpress. It works fine with normal text box:

<input type="text" name="gender" id="gender" value="<?php echo esc_attr( get_the_author_meta( 'gender', $user->ID ) ); ?>" class="regular-text" /><br />

But of course, I don't want my users to enter "male" or "female". So I need a select box! :)

May you please help me with how I have to change the code above to get a select box?!

Thanks a lot!

1 Answer 1

9

Place the following code in your functions.php

<?php
    add_action( 'show_user_profile', 'show_extra_profile_fields' );
    add_action( 'edit_user_profile', 'show_extra_profile_fields' );

    function show_extra_profile_fields( $user ) { ?>
        <h3>Extra profile information</h3>
        <table class="form-table">
            <tr>
                <th><label for="gender">Gender</label></th>
                <td>
                    <select name="gender" id="gender" >
                        <option value="Male" <?php selected( 'Male', get_the_author_meta( 'gender', $user->ID ) ); ?>>Male</option>
                        <option value="Female" <?php selected( 'Female', get_the_author_meta( 'gender', $user->ID ) ); ?>>Female</option>
                    </select>
                </td>
            </tr>
        </table>
    <?php }

    add_action( 'personal_options_update', 'save_extra_profile_fields' );
    add_action( 'edit_user_profile_update', 'save_extra_profile_fields' );

    function save_extra_profile_fields( $user_id ) {
        if ( !current_user_can( 'edit_user', $user_id ) )
            return false;

        //typo fix
        update_user_meta( $user_id, 'gender', $_POST['gender'] );
    }
?>
3
  • Perfect! Thank you very much! There was just a "save" to much - here: add_action( 'edit_user_profile_update', 'save_save_extra_profile_fields' );
    – Philipp
    Nov 21, 2011 at 9:23
  • how can we change the order of the extra fields? I like it to be the first even before Personal Options
    – alex
    May 17, 2013 at 9:16
  • Thanks for working code @Joshua Abenazer. I need this field to be displayed in my woocommerse user edit account page. Any idea how i could do that please?
    – Ana DEV
    Mar 25, 2016 at 13:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.