如何将国家/地区下拉菜单添加到用户配置文件?

时间:2015-01-27 作者:Riffaz Starr

我已将此代码段添加到functions.php

function my_new_contactmethods( $contactmethods ) {  
    $contactmethods[\'country\'] = \'country\';
    return $contactmethods;
}
add_filter(\'user_contactmethods\',\'my_new_contactmethods\',10,1);
它的性能完全符合我的要求。它显示了一个额外的字段,用于填写用户后端配置文件中的用户国家/地区。

但它只是一个文本字段。实际上,我想将此字段显示为一个下拉菜单,其中包含所有国家/地区。

如何修改此代码以获得国家/地区列表下拉菜单?

1 个回复
最合适的回答,由SO网友:Shreyo Gi 整理而成

试试这个

/* 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 
}
?>
希望这能帮到你。

结束