web-dev-qa-db-ja.com

ユーザープロファイルに国のドロップダウンメニューを追加するにはどうすればいいですか?

このコードスニペットを私のfunctions.phpに追加しました

function my_new_contactmethods( $contactmethods ) {  
    $contactmethods['country'] = 'country';
    return $contactmethods;
}
add_filter('user_contactmethods','my_new_contactmethods',10,1);

それは私が望んだように完璧に動作します。ユーザーバックエンドプロファイルのユーザー国を埋めるための追加フィールドが表示されます。

しかし、それは単なるテキストフィールドです。実際、私はこのフィールドをすべての国を含むドロップダウンメニューとして表示したいです。

国コードリストのドロップダウンメニューを表示するようにこのコードを変更するにはどうすればよいですか?

1
Riffaz Starr

これを試して

/* Save selected data */
add_action( 'personal_options_update', 'save_user_fields' );
add_action( 'edit_user_profile_update', 'save_user_fields' );

function save_user_fields( $user_id ) {

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

update_usermeta( $user_id, 'country', $_POST['country'] );
}

add_action( 'show_user_profile', 'Add_user_fields' );
add_action( 'edit_user_profile', 'Add_user_fields' );

function Add_user_fields( $user ) {

?>

<h3>Additional Field</h3>
<table class="form-table">       

    <tr>
        <th><label for="dropdown">Select field</label></th>
        <td>
            <?php 
            //get dropdown saved value
            $selected = get_the_author_meta( 'country', $user->ID ); 
            ?>
            <select name="country" id="country">
                <option value="Argentina" <?php echo ($selected == "Argentina")?  'selected="selected"' : ''; ?>>Argentina</option>
                <option value="Belgium" <?php echo ($selected == "Belgium")?  'selected="selected"' : ''; ?>>Belgium</option>
                <option value="countryX" <?php echo ($selected == "countryX")?  'selected="selected"' : ''; ?>>country X</option>
            </select>
            <span class="description">Select the above</span>
        </td>
    </tr>
</table>
<?php 
}
?>

これがあなたの仕事になることを願っています。

2
Shreyo Gi